我有两个函数:
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
我看到,当函数"one"正在等待超时时,第二个函数正在运行。但是怎么做呢?我要到3秒钟后才能打电话。你知道怎么做吗?我想这样输出:
one
two
done
如果你能解释一下这里发生了什么,我会很高兴的。
您正在调用第二个函数,并返回它返回给第一个函数的内容。由于它不返回任何内容,您将其设置为未定义。
分解代码,你可以看到发生了什么
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!')))