嵌套的 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
我看到当函数 'one' 正在等待超时时,第二个函数运行。但是怎么办?直到 3 秒后我才调用它。你知道做这项工作的方法吗?我想这样输出:
one
two
done
如果你能解释这里发生了什么,我会很高兴。
您正在调用第二个函数并将它 returns 的内容返回给第一个函数。因为它 returns 什么都没有,所以您将其设置为未定义。
拆开代码,看看是怎么回事
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!')))
我有两个功能:
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
如果你能解释这里发生了什么,我会很高兴。
您正在调用第二个函数并将它 returns 的内容返回给第一个函数。因为它 returns 什么都没有,所以您将其设置为未定义。
拆开代码,看看是怎么回事
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!')))