Javascript Promise 无法解析 createWriteStream

标签 javascript typescript promise es6-promise createwritestream

我尝试了多种让我的函数返回参数的变体,以便我只能在一个步骤完成时运行我的函数,但寻找一种不会让我陷入回调 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/

相关文章:

javascript - 为什么 object[bar] 与 object[foo] 具有相同的输出?

javascript - SystemJS+Typescript环境下Jasmine异步启动

javascript - 如何解析 jQuery 中的 promise 链?

javascript - 从 promise 创建高地溪流时如何处理 promise 拒绝?

javascript - Karma 测试运行器中的全局变量

javascript - 为什么 PHP 在浮点运算方面比 Javascript 更好?

javascript - 上传前获取文件列表

angular - ng2-charts 中的堆积条形图

javascript - 使用 Promise.all 的最佳实践是什么?

javascript - Promise 是否捕获了太多错误?