我认为这是如此基本,所以人们可能会减去对这个文档的投票,但即便如此,这让我对JavaScript中的回调函数感到困惑。
function doSomething(callback){
setTimeout(hello,5000);
callback();
}
function hi(){
console.log("hi");
}
function hello(){
console.log("hello");
}
doSomething(hi);
/* result */
// hi
// (after 5 seconds) hello
我想使用回调函数作为句柄函数的执行顺序,所以我决定使用回调模式。在上面的代码中,我想5秒后,应该执行回调函数,但为什么回调在函数之前忽略并且先运行?你能告诉我一些暗示吗?
感谢。
答案 0 :(得分:4)
在您的代码callback()
执行行setTimeout()
后执行,但setTimeout
的回调将在5000ms
之后触发,这是预期的行为。因此,如果您希望在callback()
之后hello()
执行:
function doSomething(callback){
setTimeout(function(){
hello();
callback();
},5000);
}