2 回答

TA貢獻1873條經驗 獲得超9個贊
這取決于您對“問題”的含義,但是這段代碼:
async function f2() {
await f1().catch(ex => { /* ... code in catch ... */ }) // this is what I mean
}
相當于:
async function f2() {
try {
await f1()
} catch (ext) {
/* ... code in catch ... */
} // this is what I mean
}
.catch正如您所說,使用它而不是按try-catch原樣使用可能很有用- 并非在每種情況下 - 都可以使您的代碼更具可讀性。但是您需要始終考慮是否.catch是可讀性的正確選擇。如果您將它用于可恢復的錯誤處理,它會很好地工作。

TA貢獻1859條經驗 獲得超6個贊
我想你要找的是這個
function f1(){
return new Promise((res,rej)=>{
rej(1)
})
}
async function f2(){
try {
const response = await f1();
// use the response from f1()
} catch(err) {
throw new Error(err);
}
}
f2()
沿著這些思路的東西async/await是承諾的包裝,允許您編寫看起來同步的代碼。否則你會看
function f2(){
let response;
f1().then(res => {
response = res
})
.catch(err => {
throw Error(err)
});
}
添加回答
舉報