【问题标题】:How to properly create a promise in javascript如何在 javascript 中正确创建一个 Promise
【发布时间】:2021-01-30 15:59:04
【问题描述】:

我创建了一个返回错误 TypeError [ERR_INVALID_ARG_TYPE] 的 promise 函数:“listener”参数必须是函数类型。收到未定义

 async function DlFile(url, fileName) {
  return new Promise ((fulfill, reject) => {
      https.get(url, function(res){
        const fileStream = fs.createWriteStream(`C:\\Users\\Garingo-PC\\Documents\\${fileName}.pdf`);
        res.pipe(fileStream);
    
        fileStream.on("error", reject);
    
        fileStream.on("finish", fulfill({
          status: 'ok'
        }));
      });
    }); 
  
}

const Main = async () => {
  const result = await DlFile(url, filename);
  console.log(result); //returns undefined
}

如果完成下载文件,它应该返回一些对象

【问题讨论】:

    标签: node.js


    【解决方案1】:

    fileStream.on("finish") 的参数应该是一个函数,但你没有在其中输入一个函数。 fulfill 是一个回调,但您在将它传递给完成回调之前调用了它。正确的使用方法是在完成事件触发时调用它。像这样:

    fileStream.on("finish", () => {
        fulfill({ // Call when finish event being fired
          status: 'ok'
        })
    });
    

    【讨论】:

      猜你喜欢
      • 2022-11-29
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      • 2020-12-03
      • 2015-07-10
      相关资源
      最近更新 更多