
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 值传递。










