收藏
回答

promise用法

我想用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 () { }//请求完成后执行的函数

      })

    })

  },


最后一次编辑于  03-17  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

2 个回答

  • 拾忆
    拾忆
    03-17
    同步请求并不会改变js的执行顺序,还是网上查下具promise的用法吧
    03-17
    赞同
    回复
  • 老张
    老张
    03-18

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


    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)

    }


    仅供参考


    03-18
    赞同
    回复