我尝试使用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
});
答案 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
});