如果promiseA是一個異步請求斑匪,在UI上為了便于展示需要在請求開始的時候設(shè)置loading:true层扶,結(jié)束的時候設(shè)置loading:false。
promise形式就是:
```
let loading = true;
promiseA.then(data => {
? ? loading = false;
}).catch(e => {
? ? loading = false;
}
```
怎么轉(zhuǎn)換成promise形式呢?
我一開始轉(zhuǎn)換成:
```
async function transform () {
? ? loading = true;
? ? await promsieA场晶;
? ? loading = false;
}
```
發(fā)現(xiàn)只有請求成功的時候才會生效拾并,后來發(fā)現(xiàn)await 后面跟的語句只有promise轉(zhuǎn)換成fulfilled才會生效揍堰,failed狀態(tài)時不會。運行:
```
async function test() {
????await Promise.reject()嗅义;
? ? console.log('rejected');
}
test()
```
永遠不會輸出‘rejected'屏歹。
正確的改寫方式應(yīng)該是添加try/catch
```
async function transform () {
????loading = true;
????try {
? ? ? ? await promiseA;
? ? ? ? loading = false;
????} catch (e) {
? ? ? ? loading = false;
????}
}
```
這樣就改寫成功了。