這將解決所有承諾
const promises = files.map(filename => getPdfToPrint(`output\\${outputDirectory}\\` , filename.replace("/", "")));
const res = await Promise.all(promises)
但是現在該files.map函式應該將檔案名映射到這樣的物件
const promises = files.map(filename => { return {status: getPdfToPrint(`output\\${outputDirectory}\\` , filename.replace("/", "")), filename: filename}});
const res = await Promise.all(promises)
為了檢查承諾是否解決了“成功”,以便我知道檢索和列印了哪些檔案。但是通過這種方式,解決狀態的 Promise 仍然處于未決狀態。我將如何解決這個問題?
uj5u.com熱心網友回復:
如果我理解正確,您getPdfToPrint()將回傳一個承諾。目前,您將每個映射filename到由. 為此,您可以進行回呼。這將做兩件事:首先,它將使您能夠使用Promise 函式來獲取已決議的值,以便您可以在要回傳的物件內部使用該值。其次,它將使您的回呼函式回傳一個 Promise(因為所有函式都回傳一個 Promise)。這將允許您在所有承諾都解決后進行檢測:getPdfToPrint()statusfilename.map()asyncawaitgetPdfToPrint()asyncPromise.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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/457321.html
標籤:javascript 承诺
