Class PromiseIntercept

Constructors

  • Parameters

    • interceptFun: InterceptFunction

      需要被拦截的请求函数,它必须返回一个 Promise。

    • param1: {
          once: undefined | boolean;
      } = {}

      可选参数对象,once 默认值false

      • once: undefined | boolean

    Returns PromiseIntercept

    Description

    对 同一个 promise 的多次调用,保证只调用一次,待第一次调用成功后,其余的才继续执行 一般使用方法: 采用 队列的使用进行处理,保证多次调用只会请求一次 首次调用 那么会创建队列,之后的请求,会使用队列进行阻塞,待第一次完成,再继续执行

    1. 首次调用,使用的是请求返回的结果
    2. 队列中的调用,继续执行,应该使用的是缓存中的结果

    Example: 使用示例

       // 提供给外部调用的方法
    async function syncServerTime(isSecond = false) {
    return new Promise(async(resolve, reject) => {
    const [err, res] = await uni.hua5Utils.to(queueSyncServerTime.handler(isSecond))
    // 请求的最终结果
    resolve(res)
    })
    }
    // 采用队列的方式进行网络请求
    const queueSyncServerTime = new InterceptQueue(awaitSyncServerTime)
    // 请求方法
    async function awaitSyncServerTime(isSecond) {
    return new Promise(async(resolve, reject) => {
    const [err, res] = await getServerTimestamp()
    if (err) resolve("")
    resolve(res)
    })
    }

Properties

awaitInterceptState: boolean = false

传入的拦截方法走了.then() 还是 .catch()

eventTask: any[] = []

等待时进入的放入数组中,执行后在释放

handlerErr: null = null

拦截器的失败信息

handlerRes: null = null

拦截器的成功信息

interceptFun: InterceptFunction

拦截的方法 promise,必须存在resolve或者reject

isHaveInit: boolean = false

是否已经加载过

isHttp: boolean = false

是否是在请求等待中

once: boolean = false

是否只执行一次,true:执行成功后往后在调用都不会拦截了

Methods

  • Parameters

    • Optional arg: any

      请求参数

    Returns Promise<unknown>

    请求结果

    Description

    拦截函数

Generated using TypeDoc