gpt4 book ai didi

Javascript Promise 无法解析 createWriteStream

转载 作者:行者123 更新时间:2023-11-28 03:08:06 25 4
gpt4 key购买 nike

我尝试了多种让我的函数返回参数的变体,以便我只能在一个步骤完成时运行我的函数,但寻找一种不会让我陷入回调 hell 的最佳方法。

我有以下功能

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已解决)

最佳答案

您可能没有正确实现 promise ,

function convertPdfToImage(fileName) {
let pdfImage = new PDFImage(fileName+".pdf");
return pdfImage.convertFile().then(function (imagePaths) {
let file = fs.createWriteStream(imagePaths);
file.end();
file.on("finish", () => { resolve(true); });
file.on("error", reject);
return true
}).catch(err){
console.log(err);
}
}

此外,使用 async/await,

async function convertPdfToImage(fileName) {
let pdfImage = new PDFImage(fileName+".pdf");
try{
const imagePaths = await pdfImage.convertFile();
let file = fs.createWriteStream(imagePaths);
file.end();
file.on("finish", () => { resolve(true); });
file.on("error", reject);
return true
} catch(err){
console.log(err);
}
}

另外,请参阅此 question

关于Javascript Promise 无法解析 createWriteStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60427771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com