我有2个功能。第二个比第一个更快,函数如何等待完成第一个工作?
function1(); // slow
function2(); // fast
答案 0 :(得分:4)
JavaScript是命令式和单线程的,它只是工作。 <{1}}完成之前function2()
才会开始。
如果通过 slow 你的意思是通过AJAX异步调用一些外部服务,那么我们正在谈论。 function1()
必须提供某种回调,以便在异步请求完成时调用function1()
:
function2()
实施是微不足道的,例如使用jQuery:
function1(function2);
答案 1 :(得分:1)
您必须使用某些AJAX请求。所以,在ajax完成后调用回调函数如:
function1 = new function(callback) {
$.ajax({...}).done(callback());
}
function1(function2);
答案 2 :(得分:1)
如果要异步调用函数,除了明显的回调方法之外,它们的排序可以基于事件框架。您可以添加一个事件监听器,其中function1作为处理程序,并在function2中触发该事件。
答案 3 :(得分:-1)
如果你的呼叫功能接着另一个,那么它将完成第一个功能,无论是慢速还是快速。