我正在练习回调函数,这个问题似乎无法弄清楚。
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
的嵌套超时限制的信息。这也适用于这种情况吗?
答案 0 :(得分:1)
由于setTimeout函数使用0作为延迟,它不应该先运行,然后返回数据吗?
不,即使延迟为0
,传递给setTimeout
的回调也会计划在next tick of the event loop中运行。
换句话说,在当前执行完成后,保证回调。