[英]nested setTimeout not working properly in js
我有两个功能:
function one(callback) {
setTimeout(function () {
console.log('one');
callback();
}, 3000);
}
function two(callback) {
setTimeout(function () {
console.log('two');
callback();
}, 2000);
}
当我这样调用函数时:
one(two(()=> console.log('Done!')))
这是发生了什么:
two
Done!
one
/Users/shahryarhaghighifard/Downloads/test/callback.js:68
callback();
^
TypeError: callback is not a function
我看到,当 function 'one' 正在等待超时时,第二个 function 运行。 但如何? 我直到 3 秒后才调用它。 你知道一种方法来完成这项工作吗? 我想像这样 output :
one
two
done
如果你能解释这里发生了什么,我会很高兴。
您正在调用第二个 function 并将返回的内容返回给第一个。 由于它不返回任何内容,因此您将其设置为未定义。
分解代码,你可以看到发生了什么
function one(callback) { setTimeout(function () { console.log('one'); callback(); }, 3000); } function two(callback) { setTimeout(function () { console.log('two'); callback(); }, 2000); } var secondFunction = two(()=> console.log('Done;')). console,log('secondFunction'; secondFunction) one(() => secondFunction);
应该如何
function one(callback) { setTimeout(function () { console.log('one'); callback(); }, 3000); } function two(callback) { setTimeout(function () { console.log('two'); callback(); }, 2000); } one(() => two(()=> console.log('Done!')))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.