如何在异步/等待语法中使用 Promise.prototype.finally()?
Posted
技术标签:
【中文标题】如何在异步/等待语法中使用 Promise.prototype.finally()?【英文标题】:How to use Promise.prototype.finally() in async/await syntax? 【发布时间】:2018-10-26 15:40:27 【问题描述】:实际上我的主要问题是在async/await
ES8
语法中使用Promise.prototype.catch()
,毫无疑问Promise.prototype.then()
存在于async/await
语法的本质中。
我在async/await
中搜索了有关使用Promise.prototype.catch()
的信息,发现:
async () =>
try
const result1 = await firstAsynchronousFunction();
const result2 = await secondAsynchronousFunction(result1);
console.log(result2);
catch(err)
throw new Error(`Something failed`);
而且我绝对知道Promise
链接,例如:
new Promise((resolve) =>
console.log(`Initial`);
resolve();
)
.then(() =>
console.log(`Task Number One`);
)
.catch(() =>
console.log(`Task in Error`);
)
.finally(() =>
console.log(`All Tasks is Done`);
)
所以,我的问题是如何在async/await
语法中使用finally
?
【问题讨论】:
【参考方案1】:这应该可行:
async () =>
try
const result1 = await firstAsynchronousFunction();
const result2 = await secondAsynchronousFunction(result1);
console.log(result2);
catch(err)
throw new Error(`Something failed`);
finally
console.log(`All Tasks is Done`);
【讨论】:
以上是关于如何在异步/等待语法中使用 Promise.prototype.finally()?的主要内容,如果未能解决你的问题,请参考以下文章
如何在“react-dropzone”的“onDrop”中使用异步等待? (解析错误:不能在异步函数之外使用关键字'await')