Options
All
  • Public
  • Public/Protected
  • All
Menu

@mtgoo/ctool

Index

Type aliases

BVNodeResult

BVNodeResult: "SUCCESS" | "FAILED" | "RUNNING"

BVNodeState

BVNodeState: "INIT" | "RUNNING" | "END"

IattEvents

IattEvents<T>: {}

Type parameters

  • T: object

Type declaration

IproxyEvents

IproxyEvents<T, K>: IprivateEvents & IattEvents<T> & K

Type parameters

  • T: object = {}

  • K: object = {}

Variables

Const INTERNAL_TICK

INTERNAL_TICK: unique symbol = Symbol("internalTick")

Const PARENT

PARENT: unique symbol = Symbol("parent")

Const RUNNING_NODE

RUNNING_NODE: unique symbol = Symbol("runningNode")

Const STATE_DIC

STATE_DIC: unique symbol = Symbol("STATE_DIC")

Const TRANSLATION_DIC

TRANSLATION_DIC: unique symbol = Symbol("TRANSLATION_DIC")

Const UPDATE

UPDATE: unique symbol = Symbol("UPDATE")

Functions

createWs

  • createWs(url: string): Promise<WebSocket>
  • Parameters

    • url: string

    Returns Promise<WebSocket>

executePromisesByBatch

  • executePromisesByBatch<T>(tasks: (() => Promise<T>)[], options?: { batchCount?: number; onprogress?: (progress: number, result?: T) => void; waitTime?: number }): Promise<T[]>
  • 将多条任务分割到多个小组中执行。

    description


    可用于:耗时函数拆分、削峰等
    example
    const tasks = [...Array(100)].map(item => {
        return () => new Promise((resolve, reject) => {
            setTimeout(() => resolve(1), 1000);
        });
    });
    executePromisesByBatch(tasks, {
        onprogress: (progress, result) => {
            console.log("progress", progress, result);
        }
    });
    

    Type parameters

    • T

    Parameters

    • tasks: (() => Promise<T>)[]

      任务

    • Optional options: { batchCount?: number; onprogress?: (progress: number, result?: T) => void; waitTime?: number }
      • Optional batchCount?: number

        分组的数量, 默认: 10

      • Optional onprogress?: (progress: number, result?: T) => void

        每个任务完成后回调,返回总任务进度。()

          • (progress: number, result?: T): void
          • Parameters

            • progress: number
            • Optional result: T

            Returns void

      • Optional waitTime?: number

        组任务执行间隔, 默认: 0

    Returns Promise<T[]>

retryPromise

  • retryPromise<T>(func: () => Promise<T>, options?: { count?: number; onceTryBefore?: (index: number) => void; onceTryCallBack?: (index: number, result: T, error?: any) => void; retryFence?: number }): Promise<T>
  • 重复执行目标任务直到任务 返回resolve,或者达到设定的尝试执行次数

    example
    retryPromise(() => new Promise((resolve, reject) => {
        const value = Math.random();
        if (value > 0.9) {
            resolve(value);
        } else {
            reject(value);
        }
    }), {
        onceTryBefore: (index) => console.log("开始执行", index),
        onceTryCallBack: (index, result, err) => console.log("单次执行结果:", index, result, err)
    })
        .then(result => {
            // do somethin
        })
        .catch(err => {
            // do somethin
        });
    

    Type parameters

    • T

    Parameters

    • func: () => Promise<T>

      目标任务

        • (): Promise<T>
        • Returns Promise<T>

    • Optional options: { count?: number; onceTryBefore?: (index: number) => void; onceTryCallBack?: (index: number, result: T, error?: any) => void; retryFence?: number }
      • Optional count?: number

        尝试执行次数 默认:5

      • Optional onceTryBefore?: (index: number) => void
          • (index: number): void
          • Parameters

            • index: number

            Returns void

      • Optional onceTryCallBack?: (index: number, result: T, error?: any) => void
          • (index: number, result: T, error?: any): void
          • Parameters

            • index: number
            • result: T
            • Optional error: any

            Returns void

      • Optional retryFence?: number

        重试时间间隔, 默认 1500 毫秒

    Returns Promise<T>

wrapPromise

  • wrapPromise<T>(func: () => Promise<T>): Promise<[any, T]>
  • 将promise结果包装为 [error,T]

    description


    参考:[how-to-write-async-await-without-try-catch](https://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/)
    example
    //包裹api请求
    const [err, result] = await wrapPromise(() => fetch("baidu.com"));
    

    Type parameters

    • T

    Parameters

    • func: () => Promise<T>

      目标方法

        • (): Promise<T>
        • Returns Promise<T>

    Returns Promise<[any, T]>

Generated using TypeDoc