我尝试了许多让我的函数返回参数的变体,这样我只能在一个步骤完成时运行我的函数,但寻找不会让我陷入回调地狱的最佳方法。
我有以下功能
function convertPdfToImage(fileName) {
return new Promise((resolve, reject) => {
var pdfImage = new PDFImage(fileName+".pdf");
pdfImage.convertFile().then(function (imagePaths) {
var file = fs.createWriteStream(imagePaths);
file.end();
file.on("finish", () => { resolve(true); });
file.on("error", reject);
return resolve(true)
});
});
}
我在这里这样称呼:
Promise.all([convertPdfToImage('test2'), convertPdfToImage('test1')])})
.then(function () {
compareItems(codeId);
});
这是 PromiseAll 中调用的方法
function convertPdfToImage(env: string, shareClassId: string[]) {
return new Promise((resolve, reject) => {
var pdfImage = new PDFImage("output/" + shareClassId + env + ".pdf");
pdfImage.convertFile().then(function (imagePaths) {
var file = fs.createWriteStream(imagePaths);
file.end();
file.on("finish", () => { resolve(true); });
file.on("error", reject);
return resolve(true)
});
});
}
无论我尝试什么问题,我都无法保证 compareItems 在 convertPdfToImage 之后运行(PromiseAll 已解决)