假設我有一個函數,它需要一些輸入並對promise中的輸入執行一些操作。而不是僅僅在被拒絕的狀態下返回一個承諾,如果輸入是「無效的」,我想我的函數拋出一個錯誤。現在的問題是,承諾會捕獲錯誤並進入拒絕狀態。這可能嗎?真的在一個承諾中拋出一個錯誤
例子:
function myFunc(input) {
return new Promise(function(resolve, reject) {
if (input) {
resolve();
} else {
throw 'invalid input!'; // ideally this should really throw, rather than just reject
}
});
}
我一直在玩這個周圍,我開始認爲這是不可能的,但我想我會問這裏看看如果任何人有怎樣的想法做到這一點。提前致謝。
在一般情況下,如果您不想使用async/await,這是不可能的,因爲在函數myFunc返回後很可能會發生錯誤。 –
爲什麼不把錯誤放到拒絕回調中? – mhodges
承諾必須解決或拒絕。投擲必須拒絕承諾,否則承諾將等待並且無法完成承諾。拋出之後,您不能調用解析/拒絕,因爲拋出終止執行,因此任何拋出的錯誤都會導致拒絕。 – Blindman67