如何将异步请求函数 `home_barlist1` 封装成 Promise,以便使用 `this.home_barlist1().then` 进行调用?

如何将异步请求函数 `home_barlist1` 封装成 promise,以便使用 `this.home_barlist1().then` 进行调用?

promise 封装问答

问题:

如何将以下代码封装 promise,以便可以直接调用 this.home_barlist1().then?

home_barlist1: function home_barlist1() {
    //获取中间导航 
    var that = this;
    _wxrequest2.default.post({
        'url': _api2.default.home_barlist,
        'data': {
            show_type: 4
        }
    }).then(function (res) {
        if (res.code == 100) {
            var homelist = res.data;
            that.setdata({
                homelist1: homelist
            });
        } else {
            _tip2.default.toast(res.data);
        }
    });
}

答案:

该代码经封装后,调用方式为 this.home_barlist1().then:

home_barlist1: function home_barlist1() {
    //获取中间导航 
    return new Promise((resolve, reject) => {
        var that = this;
        _wxRequest2.default.post({
            'url': _api2.default.home_barlist,
            'data': {
                show_type: 4
            }
        }).then((res) => {
            if (res.code == 100) {
                var homelist = res.data;
                that.setData({
                    homelist1: homelist
                });
                resolve(res);
            } else {
                _tip2.default.toast(res.data);
            }
        });
    });
}

修改点:

  • promise 实例返回。
  • 通过箭头函数简化 _wxrequest2.default.post() 中的回调函数。
  • 在成功时将 res 作为 promise 的 resolve 值传递

以上就是如何将异步请求函数 `home_barlist1` 封装 Promise,以便使用 `this.home_barlist1().then` 进行调用?的详细内容,更多请关注硕下网其它相关文章!