[英]How to resolve pending promises within map returning an object?
這將解決所有的承諾
const promises = files.map(filename => getPdfToPrint(`output\\${outputDirectory}\\` , filename.replace("/", "")));
const res = await Promise.all(promises)
但現在files.map
function 應該 map 文件名到 object 這樣
const promises = files.map(filename => { return {status: getPdfToPrint(`output\\${outputDirectory}\\` , filename.replace("/", "")), filename: filename}});
const res = await Promise.all(promises)
為了檢查 promise 是否解決了“成功”,以便我知道檢索和打印了哪些文件。 但是這樣Promise解析狀態還是pending。 我將如何解決這個問題?
如果我理解正確,您的getPdfToPrint()
返回 promise。目前您正在將每個filename
映射到getPdfToPrint()
返回的 promise,但是您希望在 object 中的關鍵status
以及filename
。 為此,您可以使.map()
回調async
。 這將做兩件事:首先,它將使您能夠await
getPdfToPrint()
function Promise 以獲取已解析的值,以便您可以在要返回的 object 中使用它。 其次,它將使您的回調 function 返回 Promise(因為所有async
函數都返回 Promise)。 這將允許您使用Promise.all()
來檢測所有承諾是否已解決:
const promises = files.map(async filename => {
const pdf = await getPdfToPrint(`output\\${outputDirectory}\\` , filename.replace("/", ""));
return {status: pdf, filename};
});
const res = await Promise.all(promises);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.