我正在尝试运行此代码段,它似乎没有执行回调。我试图了解正在发生的事情。



  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()会发生什么?

最佳答案

在函数exampleSimpleTask中,您永远不会调用函数done

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




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

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

 exampleSimpleTask(demo); 

10-07 20:55