微信小程序异步转同步如何实现?(亲测可行)

小程序大部分函数和数据库操作都是异步执行的,如果希望同步执行,需要用到async 和await这对基友,必须成对出现。

为了快速验证 async/await 可用,在 App.js 的 onLaunch() 事件函数中加一段代码:

   //同步请求接口的公共方法-用到的地方需要配合使用async+await才能调用(封装示例)
    wx_tb_request(url,method='get',data={}){
      return new Promise((resolve,reject)=>{
        // 异步请求
        wx.request({
          url: url,
          method: method,
          data: data,
          dataType: 'json',
          header: {
          'content-type': method == 'GET'?'application/json':'application/x-www-form-urlencoded',
          'Accept': 'application/json'
           },
           success:(res)=>{
            resolve(res.data);//返回的就是接口完整数据-打印res的话会包含header头等信息
           },
           fail:(err)=>{
            reject(err);
           }
        });
      })
      },

/**

*  那个地方需要调用,所在的方法就需要使用async声明,里面才可以(同时await声明一下)调用异步请求(封装示例)

*/

     /********轮播 */
    async lunbo() {
       var res=await app.wx_tb_request(app.domain+'/api/index/lunbo','post');
      if(res.code==1){
         this.setData({
          imgUrls:res.data,
      })
    }

 

THE END