Settimeout不会立即返回

时间:2017-07-07 05:56:54

标签: javascript callback settimeout

我正在练习回调函数,这个问题似乎无法弄清楚。

function foo () {    
  var data = 10;    
  bar(function (players) {
    data = players;
  });    
  return data;
}

function bar (callback) {
  setTimeout(callback, 0);
}

var result = foo();

我预计结果会因data = players而未定义,并且没有任何内容传递给玩家。由于setTimeout函数使用0作为延迟,不应该先运行,然后返回数据?我查看了MDN页面,似乎有关于>=4ms的嵌套超时限制的信息。这也适用于这种情况吗?

1 个答案:

答案 0 :(得分:1)

  

由于setTimeout函数使用0作为延迟,它不应该先运行,然后返回数据吗?

不,即使延迟为0,传递给setTimeout的回调也会计划在next tick of the event loop中运行。

换句话说,在当前执行完成后,保证回调