[英]Continue .map loop after util.promisify request fails in iteration (async await)
我有下面的異步 function 接受 4 個對象的數組。 第一個在 a.map 循環中處理,該循環執行查詢並導致錯誤(在 await executeQuery(queryString) 中)。 當這第一個 object 處理完成時,循環結束,其他 3 個對象不處理。
async function myFunction(arrayOfObjects, param1) {
const promises = arrayOfObjects.map(async function (currElement, i) {
var queryString = 'www.querystring.com?APIparameter=param1';
const executeQuery = util.promisify(request);
await executeQuery(queryString).then(data => {
//process data here using currElement, i
}).catch(err => console.log('error: ', err));
});
await Promise.all(promises).catch();
}
我最初只有 await Promise.all(promises) 並考慮將其修改為 await Promise.all(promises).catch(); 可以解決問題,但在第一個 object 迭代時仍然失敗。
我想知道在executeQuery中遇到錯誤后如何最好地繼續執行.map循環。
謝謝,麻煩您了!
不是 100% 確定這段代碼發生了什么,但我會改變一些事情。 首先,在循環中使用await
不是一個好習慣,其次,您的promises
數組可能不是您所期望的,因為await
會產生,直到每個 promise 在循環內得到解決。 從map
Promises
返回Promise
以生成一個 Promise 數組,每個 Promise 將在自己的時間內解析和處理數據。 然后,您可以await
所有承諾並使用try/catch
捕獲任何錯誤。 類似於以下內容的內容應該可以滿足您的期望...
async function myFunction(arrayOfObjects, param1) {
const executeQuery = util.promisify(request);
const promises = arrayOfObjects.map((currElement, i) => {
const queryString = 'www.querystring.com?APIparameter=param1';
return executeQuery(queryString).then(data => {
// process data here using currElement, i
});
});
try {
await Promise.all(promises);
// all promises will be resolved here
} catch (err) {
console.log('error: ', err);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.