收藏
回答

如何让函数等待wx.request的结果再返回?

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 需求 wx.request 客户端 7.0.4 2.6.6

在第一个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



最后一次编辑于  2019-05-11
回答关注问题邀请回答
收藏

1 个回答

  • 可恶の小郑
    可恶の小郑
    2019-05-24

    利用 async await

    2019-05-24
    有用
    回复
登录 后发表内容