3

我有 2 个功能。第二个比第一个快,函数怎么能等待完成第一个的工作?

function1(); // slow 

function2(); // fast
4

4 回答 4

4

JavaScript 是命令式和单线程的,它就是这样工作的。function2()在完成之前不会开始function1()

如果是指通过 AJAX 异步调用一些外部服务,那么我们正在谈论。function1()必须提供某种回调,以便在异步请求完成时function2()调用:

function1(function2);

实现很简单,例如使用 jQuery:

function function1(callback) {
  $.ajax({url: 'some-url'}).done(callback);
}
于 2012-10-27T12:11:18.783 回答
1

您必须使用一些 AJAX 请求。所以,ajax完成后调用回调函数如:

function1 = new function(callback) {
    $.ajax({...}).done(callback());
}

function1(function2);
于 2012-10-27T12:11:50.840 回答
1

如果要异步调用函数,除了明显的回调方法外,它们的排序可以基于事件框架。您可以添加一个带有 function1 作为处理程序的事件侦听器,并在 function2 中触发该事件。

于 2012-10-27T12:17:19.643 回答
-1

如果您一个接一个地调用一个函数,那么它将完成第一个函数,它可能会很慢或很快。

于 2012-10-27T12:12:03.653 回答