在JavaScript的世界中,所有代码都是单线程执行的。
由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。异步执行可以用回调函数实现:
function callback() {
console.log('Done');
}
console.log('before setTimeout()');
setTimeout(callback, 1000); // 1秒钟后调用callback函数
console.log('after setTimeout()');
AJAX就是典型的异步操作:
payment(options,successcallback,errorcallback) {
if (options) {
if (undefined !== options.paySign) {
var payObj = {
timeStamp: options.timeStamp,
nonceStr: options.nonceStr,
package: options.package,
signType: options.signType,
paySign: options.paySign,
success: function(res) {
successcallback(res)
},
fail: function(res) {
errorcallback(res)
},
complete: function(res) {}
}
//调用支付接口
wx.requestPayment(payObj);
}
}
}
common.payment(res.data.payInfo, function (res) { //去支付
wx.Toast({ content: "支付成功" });
that.triggerEvent('myreward', myRewardDetail)
},function(){
wx.Toast({ content: "支付失败" });
})
promise:
payment(options) {
return new Promise((resolve, reject) => {
if (options) {
if (undefined !== options.paySign) {
var payObj = {
...
success: function(res) {
resolve(res)
},
fail: function(res) {
reject(res)
},
complete: function(res) {}
}
//调用支付接口
wx.requestPayment(payObj);
}
}
})
}
common.payment(res.data.payInfo).then(res => { //去支付
wx.Toast({ content: "支付成功" });
that.triggerEvent('myreward', myRewardDetail)
}).catch(err => {
wx.Toast({ content: "支付失败" });
that.setData({ flag: false });
})