promise用法
发布于 7 年前 作者 qzhao 4421 次浏览 来自 问答

我想用promise让wx.request同步,代码如下,但是结果 aaaaa log先输出了,仍旧是异步,没有同步,我想知道我哪儿错了,求指点。

onLoad() {

    var that = this;

 

    that.getPromiseRequest().then(function(res){

      that.setData({

        fileCont: res

      })

      console.log(‘res is’+res)   // 第一次的log

    })

。。。

console.log(‘aaaaa’)    //第二次的log

,

getPromiseRequest() {

    return new Promise(function (resolve, reject) {

      wx.request({

        url: ‘xxx’,//请求地址

        header: {//请求头

          “Content-Type”: “application/x-www-form-urlencoded”

        },

        method: “GET”,//get为默认方法/POST

        success: function (res) {

          resolve(res.data);//将结果往上抛

        },

        fail: function (err) { },//请求失败

        complete: function () { }//请求完成后执行的函数

      })

    })

  },

2 回复

关于异步转同步,我是这样做的:

1、promisify.js

module.exports = api => {

    return (options, …params) => {

        return new Promise((resolve, reject) => {

            api(Object.assign({}, options, { success: resolve, fail: reject }), …params);

        });

    };

};

2、app.js

const promisify = require(’./lib/promisify.js’);

App({

    request: promisify(wx.request)

})

3、任意page

onLoad: async function(){

    let res = await getApp().request(XXX)

}

仅供参考

同步请求并不会改变js的执行顺序,还是网上查下具promise的用法吧

回到顶部