小程序wx.request接口异步问题,在function中代替return返回值的方法

以前我正常的写法是这样的

function www(url,data) { 
    wx.request({ 
      url: url,
      data: data,     
      header: { 'content-type': 'application/json' },
      success: function (res) { 
        resolve(res.data)//设置promise成功标志 
      }, fail: function (res) { console.log("at post request: 请求失败") 
      reject(res.data)//设置promise失败标志 
     }); 
  }

调用直接this.myddiy(url,data)就好了,但其实这样是不行的
所以今天也是相当于自己做一个笔记,正确的写法是如下:

www:function(u,m,d){
return new Promise((r,s)=>{
  wx.request({
    url: u,
    method:m,
    data:d,
    header:{'content-type': 'application/x-www-form-urlencoded' },
    success(res){
      r(res.data)
    },fail(res){s(res.data)}
  })
})
 }

调用直接用then

 www('url','get/post',此为请求的参数).then(res=>{
 console.log(res)
 })

这样异步问题就解决了,只有真正获取到信息后才执行!

本文链接:https://www.dnwfb.com/1560.html,转载请注明出处。
0

评论0

没有账号? 注册  忘记密码?