3 回答

TA貢獻1828條經驗 獲得超3個贊
你可以,但你不需要。這取決于您是要使用await運算符(添加async關鍵字)還是使用then函數鏈接(無需添加它)。
如果你選擇你把它放在錯誤的地方
return {
loadSmthForFilter: async function (diseases) {
return new Promise((resolve, reject) => {
$.get('/api/bla', { diseases })
.done(resolve)
.fail(reject);
});
}
順便說一句,您應該直接返回$.get,因為這是一個承諾,無需將其包裝在另一個承諾中。

TA貢獻1884條經驗 獲得超4個贊
您不需要將此功能與 async 一起使用。該函數返回一個 Promise 但不等待一個。但是,我通常將 async 用于返回承諾以等待輸出的函數。

TA貢獻1848條經驗 獲得超6個贊
該async關鍵字在需要時非常有用,但它給函數調用增加了一些額外的開銷,因為它在函數體內部包裹了一個 try/catch,它以不同的方式處理返回值并創建了一個 Promise。
所以,我async只在需要時使用,那是我想await在函數內部使用的時候,或者非常偶爾,當我想利用自動 try/catch 包裝并且我正在使用某種異步操作時。
在您的情況下,這些情況似乎都不適用,因此我將刪除承諾反模式(手動將承諾包裝在另一個中),返回$.get()已經返回的承諾并執行以下操作:
return {
loadSmthForFilter: function (diseases) {
return $.get('/api/bla', { diseases });
}
};
添加回答
舉報