Javascript 回调未被调用

标签 javascript callback

我正在尝试运行此代码片段,但它似乎没有执行回调。我正在尝试了解发生了什么事。

  function exampleSimpleTask(done) {
    console.log("task", "Before "+new Date().getTime());
    setTimeout(() => done, 2000);
  }

 function demo() {
   alert("Demo Executed");
 }

 exampleSimpleTask(demo); // it doesn't do anything.
 //  exampleSimpleTask.call(null, demo);
 // exampleSimpleTask.call(null, demo.bind(this)); 

我不确定为什么执行回调,我怀疑它与箭头函数有关。如果将 => 替换为 function() 会发生什么?

最佳答案

您忘记在 lambda 表达式中调用 done() 函数。下面的代码应该可以工作:

  function exampleSimpleTask(done) {
    console.log("task", "Before "+new Date().getTime());
    setTimeout(() => done(), 2000);
  }

 function demo() {
   alert("Demo Executed");
 }

 exampleSimpleTask(demo); // it doesn't do anything.
 //  exampleSimpleTask.call(null, demo);
 // exampleSimpleTask.call(null, demo.bind(this)); 

关于Javascript 回调未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52938045/

相关文章:

javascript - Yii Register 核心脚本正在调用 Controller 名称

Javascript for循环添加 "n"个选项元素?

javascript - polymer 核心过渡不起作用

javascript - 如何动态地将参数从高阶函数传递到回调函数?

python - 如何从fastapi中的另一个api调用一个api?

javascript - 创建一个具有异步构造函数的对象数组

javascript - 如果没有 id,用 JavaScript 填写网站上的输入字段?

javascript - 一页中有两个数据表 - 如何仅滚动其中一个表?

javascript - d3.json回调函数

Wcf 回调 net tcp 双工只有 1 路故障