首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >未调用Javascript回调

未调用Javascript回调
EN

Stack Overflow用户
提问于 2018-10-23 05:32:14
回答 3查看 29关注 0票数 0

我正在尝试运行这段代码,但它似乎没有执行回调。我在试着理解到底发生了什么。

代码语言:javascript
复制
  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()取代了=>,会发生什么

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-23 05:37:05

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

代码语言:javascript
复制
function exampleSimpleTask(done) {
  console.log("task", "Before "+new Date().getTime());
  setTimeout(() => done(), 2000);
}

代码语言:javascript
复制
function exampleSimpleTask(done) {
    console.log("task", "Before "+new Date().getTime());
    setTimeout(() => done(), 2000);
  }

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

 exampleSimpleTask(demo); 

票数 0
EN

Stack Overflow用户

发布于 2018-10-23 05:35:52

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

代码语言:javascript
复制
  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)); 

票数 1
EN

Stack Overflow用户

发布于 2018-10-23 05:57:44

setTimeout中不需要箭头函数。setTimeout()的第一个参数是在到达时间时要执行的函数,而done包含对该函数的引用,因此只需直接传递它即可。

代码语言:javascript
复制
  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)); 

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52938045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档