如何在 async/await 语法中使用 Promise.prototype.finally()?
How to use Promise.prototype.finally() in async/await syntax?
实际上我的主要问题是在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
?
这应该有效:
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 are Done`);
}
}
实际上我的主要问题是在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
?
这应该有效:
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 are Done`);
}
}