setTimeout从不执行函数2

时间:2017-01-18 21:48:42

标签: javascript callback

我尝试使用setTimeout

在javascript中编写异步函数调用
function async(fn, callback) {
setTimeout(function () {
    fn();
    callback();
}, 1000);
}

这是调用函数的方式。我希望首先运行函数foo(),然后运行我的下一个函数。 Foo()成功运行但下一个函数永远不会出现。有什么想法吗?

async(foo(), function () {
    var check = checkField();
    alert('Check: ' + check); //somehow never comes out
});

2 个答案:

答案 0 :(得分:2)

您以同步方式调用foo,因为您不是将foo的引用传递给async函数,而是调用foo并传递给async foo的结果,这可能是undefined(虽然只是在这里猜测,因为我不知道foo的样子),因此,当超时命中并且async尝试调用fn时,它会抛出undefined不是函数的错误,因此永远不会到达调用第二个回调的行。 您应该以这种方式致电async

async(foo, function () {
    var check = checkField();
    alert('Check: ' + check);
});

答案 1 :(得分:2)

在调用async时,你应该传递foo而不是调用它:

async(foo, function () {
var check = checkField();
alert('Check: ' + check); //somehow never comes out
});