繁体   English   中英

嵌套的 setTimeout 在 js 中无法正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM