簡體   English   中英

如何解決 map 返回 object 內的未決承諾?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM