如何让函数等待wx.request的结果再返回?
发布于 5 年前 作者 fqiu 10146 次浏览 来自 问答

在第一个js文件中我写了一个判断:

if(isCoincide(参数...)){
} else{
}

在第二个js文件中定义 isCoincide 函数:

export function isCoincide(参数...){
  var res_data
  var promise = new Promise((resolve, reject) => {
    wx.request({
      url: url,
      data: {},
      header: header,
      success: function (res) {
        resolve(res);
        res_data = res.data
      },
      fail: function (res) {
        reject(res.errMsg || 'failed');
      }
    });
  });
  promise.then(()=>{
    console.log(res_data)
    return judgeCoincide(参数..., res_data)
  })
  console.log("end")
}

这个judgeCoincide是用来判断wx.request获得的返回值是否满足我的要求

问题是:

    wx.request是异步执行,我希望isCoincide能够等到

    promise.then(()=>{
    console.log(res_data)
    return judgeCoincide(参数..., res_data)

    })

    

执行完之后再返回我的判断结果,而不是直接console.log("end") 就返回了,这样的话我的第一个js文件的if判断一直都是true

        

请问有什么好的解决办法吗?我在网上找了很久,promise貌似不能够解决异步的问题,我不希望使用while循环等待或者setTimeOut

1 回复

利用 async await

回到顶部