// users.hooks.js
const userDeletion = require('../userdeletion/userDeletion');
const triggerUserDeletion = () => {
return async (context) => {
const userDeletionRes = userDeletion(context);
const userDeletionResRes = userDeletionRes(context);
await Promise.all(
[userDeletionResRes]
);
};
};
// userDeletion.js
module.exports = () => {
return async (context) => {
const userDeletionResult = await context.app.service('replicate').remove(
{
// ...
}
);
const userDeletionResultData = userDeletionResult.data[0];
console.log(userDeletionResultData);
};
};
上面是我的鉤子。我如何等待 2 個承諾,即呼叫 2 個服務(不僅是復制服務)
uj5u.com熱心網友回復:
您應該創建兩個 Promise 物件,然后使用await Promise.all(promise1, promise2)
或await Promise.allSettled(promise1, promise2)
暫停,直到兩者都收到資料回傳。
通過不單獨呼叫await
每個 Promise,您允許兩個請求并行運行,從而加速依賴它們的函式。您提出的請求越多,這一點就越明顯,但即使有兩個請求,它也可以將等待的時間減半。
await Promise.all()
將等待所有承諾解決,或者一旦任何承諾拒絕就會拋出錯誤。如果您需要兩個請求都成功才能繼續執行程式,這很有用 - 這樣您就可以立即開始錯誤處理。
await Promise.allSettled()
將等待所有承諾解決或拒絕。然后,您可以映射回傳的物件串列并檢查該status
欄位以確定它們是已解決還是被拒絕。這在您希望進行更精細的錯誤處理或可以從失敗的請求中恢復并繼續執行函式的情況下很有用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/529971.html
標籤:打字稿羽毛