【发布时间】:2018-05-25 09:58:52
【问题描述】:
我不明白为什么我的程序在执行下一行代码之前没有完成递归函数。
console.clear();
var a = 1;
function logA() {
if (a<11) {
console.log(a);
a++;
setTimeout(logA, 100);
}
else {
return;
}
}
logA();
console.log("after set timeout");
示例: https://jsbin.com/moyanudeki/edit?js,console
堆栈中发生了什么?
【问题讨论】:
-
更改 setTimeout(logA, 100);设置超时(logA(),100);你忘了 ()
-
我只是想了解调用堆栈的行为方式。我想我应该在“设置超时后”之前看到 1...10 记录
-
@Mgasmi 不,这会导致它根本无法工作
-
@Mgasmi 除非我弄错了,否则它将执行 logA 函数,而不是将其传递给 setTimeout 以在延迟后执行。所以我会得到我需要的输出,而不是延迟。
标签: javascript asynchronous settimeout