跳至主要內容

返回Promise对象

chanchaw小于 1 分钟javascript

reject返回机制

下面案例是在做访客系统中在微信小程序的工具类 http 中制作的返回异步对象,通过该案例介绍 reject 返回的机制

const audit$ = (id: number):Promise<IResponseResult<string>> => {
  return new Promise((resolve,reject) => {
    wx.request({
      header: { "Content-Type": "application/json; charset=UTF-8" }, method: 'POST',
      url: `https://域名/visitorbe/visit/audit`,
      data: JSON.stringify({unionId,id}),
      success: (res: any) => {// 返回直接结果
        const { success, msg } = res.data;// res.data = 开发者后台响应来的 IResponseResult 类型 
        if(!success){
          console.log('审核中后台返回失败');
          wx.showToast({title: msg, icon:'none', duration: 3000});
            
          // 下面调用 reject 并不会导致直接退出本函数,会继续向下执行到下一个 console.log
          // 以及后面的 resolve,但是在调用者的逻辑链中只会进入 err 分支,而不会进入响应成功的分支
          // 即后面的 resolve 效果等同没有执行
          reject(res.data);
        }
        console.log('http#audit,请求后台审核成功,即将返回给调用者');
        resolve(res.data);
      },
      fail: (err: any) => {
        const remark = `请求用户unionId:${unionId}的访单统计数据时出现异常:${JSON.stringify(err)}`;
        insertLogObj({page:'http',func:'getVisitStatistics$',remark:remark})
        reject(err)
      },
      complete: () => {}
    })
  })
}