美文网首页
promise 改写async/await的正确方式

promise 改写async/await的正确方式

作者: ashyanSpada | 来源:发表于2020-03-04 14:38 被阅读0次

如果promiseA是一个异步请求,在UI上为了便于展示需要在请求开始的时候设置loading:true,结束的时候设置loading:false。

promise形式就是:

```

let loading = true;

promiseA.then(data => {

    loading = false;

}).catch(e => {

    loading = false;

}

```

怎么转换成promise形式呢?

我一开始转换成:

```

async function transform () {

    loading = true;

    await promsieA;

    loading = false;

}

```

发现只有请求成功的时候才会生效,后来发现await 后面跟的语句只有promise转换成fulfilled才会生效,failed状态时不会。运行:

```

async function test() {

    await Promise.reject();

    console.log('rejected');

}

test()

```

永远不会输出‘rejected'。

正确的改写方式应该是添加try/catch

```

async function transform () {

    loading = true;

    try {

        await promiseA;

        loading = false;

    } catch (e) {

        loading = false;

    }

}

```

这样就改写成功了。

相关文章

网友评论

      本文标题:promise 改写async/await的正确方式

      本文链接:https://www.haomeiwen.com/subject/yupvlhtx.html