我有 2 个功能。第二个比第一个快,函数怎么能等待完成第一个的工作?
function1(); // slow
function2(); // fast
JavaScript 是命令式和单线程的,它就是这样工作的。function2()
在完成之前不会开始function1()
。
如果慢是指通过 AJAX 异步调用一些外部服务,那么我们正在谈论。function1()
必须提供某种回调,以便在异步请求完成时function2()
调用:
function1(function2);
实现很简单,例如使用 jQuery:
function function1(callback) {
$.ajax({url: 'some-url'}).done(callback);
}
您必须使用一些 AJAX 请求。所以,ajax完成后调用回调函数如:
function1 = new function(callback) {
$.ajax({...}).done(callback());
}
function1(function2);
如果要异步调用函数,除了明显的回调方法外,它们的排序可以基于事件框架。您可以添加一个带有 function1 作为处理程序的事件侦听器,并在 function2 中触发该事件。
如果您一个接一个地调用一个函数,那么它将完成第一个函数,它可能会很慢或很快。