利用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();

results matching ""

    No results matching ""

    results matching ""

      No results matching ""