使用Javascript回调函数

时间:2015-12-28 17:40:19

标签: javascript callback

我认为这是如此基本,所以人们可能会减去对这个文档的投票,但即便如此,这让我对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秒后,应该执行回调函数,但为什么回调在函数之前忽略并且先运行?你能告诉我一些暗示吗?

感谢。

1 个答案:

答案 0 :(得分:4)

在您的代码callback()执行行setTimeout()后执行,但setTimeout的回调将在5000ms之后触发,这是预期的行为。因此,如果您希望在callback()之后hello()执行:

function doSomething(callback){ 
    setTimeout(function(){
        hello();
        callback();
    },5000);
}