利用async和await以同步代码方式调用数据组件的api
使用场景
牛刀的数据组件提供了newData、refreshData、saveData等api方法,但是这些方法都是异步的,即返回的是promise
如果代码上要进行多个api的调用,要通过then回调来保证异步请求的调用顺序
代码写法如下:
let data0 = this.comp("restData0");
let data1 = this.comp("restData1");
let count = 0;
data0.refreshData().then(function() {
console.log("data0.getCount():" + data0.getCount());
count += data0.getCount();
data1.refreshData().then(function(){
console.log("data1.getCount():" + data1.getCount());
count += data1.getCount();
console.log("total count:" + count);
})
})
示例代码是简单的,如果加上更多的代码逻辑,代码嵌套层次会使得代码逻辑非常复杂
async和await是ES6提供的新的语法,可以将promise的调用改为同步的写法
代码写法如下:
let self = this;
async function doit() {
let data0 = self.comp("restData0");
let data1 = self.comp("restData1");
let count = 0;
await data0.refreshData();
// 第一个数据刷新后
console.log("data0.getCount():" + data0.getCount());
count += data0.getCount();
await data1.refreshData();
console.log("data1.getCount():" + data1.getCount());
// 第二个数据刷新后
count += data1.getCount();
console.log("total count:" + count);
}
doit();