最近在做微信小程序,在ajax获取数据的时候卡了很久,需求是在一个ajax中请求完成然后用这个返回数据再去请求另一个ajax,然后把两个数据进行处理(在第一个ajax中).因为微信小程序ajax是异步,所以通常第一个执行完后,第二个才执行完,这样就处理不了数据了.查了半天,总算是解决了这个问题,在此note下:
myAsyncFunc: function () {
return new Promise(function (resolve, reject) { //这儿返回一个Promise对象
console.log("myAsyncFunction done!");//打印输出信息
resolve({ data: "Hello,World" });//储存数据
});
},
myAsyncFunc2: function () {
return new Promise(function (resolve, reject) { //同上
console.log("myAsyncFunction2 done!");
resolve({ data: "I am coming" });
});
},
doit: async function () { //在需要同步方法的地方加上 async
var res = await this.myAsyncFunc(); //在需要阻塞同步的方法前加上 await
console.log(" res: " + res.data);
var res2 = await this.myAsyncFunc2();
console.log(" res2: " + res2.data);
return res2.data + res.data ;
},
onLoad: function(options) {
this.doit().then(res => {
console.log(' onLoad: ' + res);
})
}
打印结果
最基本的例子就在这儿啦.