【问题标题】:callback function executes before the finished request.on function回调函数在完成 request.on 函数之前执行
【发布时间】:2016-11-18 02:38:02
【问题描述】:

我做了一个npm module供我个人下载文件 使用request 并使用progress 显示进度条

https://github.com/MaxySpark/maxyspark-download

但是当我测试它时,回调函数首先执行,它应该在下载完成后执行。

我的测试文件

const maxDonwload = require('maxyspark-download');

var filename = "prog.gif";
var url = "http://skillprogramming.com/images/pictuers/how_many_of_you_get_the_same_feeling.gif";
function endFunc() {
    console.log("download completed : "+filename);
}
maxDonwload.download(url,filename,endFunc());

这是输出

download completed : prog.gif
File Size : 0.50 MB

  downloading [====================] 100% 0.0s
HERE HERE

我在

中的 node-modules index.js 文件中添加了 console.log("HERE HRERE");
req.on('end' function() {
    console.log("HERE HRERE");
    callback;
}

console.log("这里是 HRERE");下载完成后执行,但回调不执行

【问题讨论】:

  • 你直接调用你的endfunc,删除()maxDonwload.download(url,filename,endFunc);
  • 没有用。输出-File Size : 0.50 MB downloading [====================] 100% 0.0s HERE HERE
  • 错误可能在这里,你能检查一下吗? index.js- GitHub
  • 确实 callback; 不会做任何事情...这就是我们想要的 ()...callback();
  • 哦,谢谢@Keith。我现在明白了...callback()

标签: javascript node.js npm callback node-modules


【解决方案1】:

您正在调用该函数,而应将其作为不带 () 的参数传递:

maxDonwload.download(url,filename,endFunc);

【讨论】:

  • 没有用。输出-File Size : 0.50 MB downloading [====================] 100% 0.0s HERE HERE
  • 错误可能在这里,你能检查一下吗? index.js- GitHub
  • 在我的电脑上它正在工作,保存文件。它只记录下载时间。对我来说这是图书馆的错误。
  • 谢谢!有两个错误,一个是您提到的,另一个是在节点模块的index.js 文件中,我写了callback 它应该是@Keith 所说的callback()
【解决方案2】:

您正在调用 endFunc() 而不是将函数本身作为参数传递。

这应该可以解决它:

maxDonwload.download(url,filename,endFunc);

【讨论】:

  • 没有用。输出-File Size : 0.50 MB downloading [====================] 100% 0.0s HERE HERE
  • 错误可能在这里,你能检查一下吗? index.js- GitHub
猜你喜欢
  • 2021-08-02
  • 2018-08-12
  • 1970-01-01
  • 2018-02-08
  • 2019-02-22
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
  • 2022-12-18
相关资源
最近更新 更多