2012-10-27 42 views
2

我有2个函数。第二个比第一个更快,这个函数如何等待完成第一个工作?等待一个函数来完成

function1(); // slow 

function2(); // fast 

回答

4

JavaScript是祈使句和单线程的,它只是工作这样。直到function1()完成,function2()才会启动。

如果通过缓慢你的意思是通过AJAX异步调用一些外部服务,那么我们正在谈论。 function1()必须提供某种回调的,这样,当异步请求完成,function2()叫做:

function1(function2); 

实现是微不足道的,例如使用jQuery:

function function1(callback) { 
    $.ajax({url: 'some-url'}).done(callback); 
} 
1

您必须使用一些AJAX请求。因此,AJAX完整的调用回调函数等之后:

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

function1(function2); 
-1

如果你的其他后调用一个函数,那么将完成第一或者它可能是慢或快。

+1

这有什么关系? – Prasanth

0

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

+0

@downvoter你能不能请解释downvote留言? –

+0

不是我的倒退,我也得到-1。似乎这里的所有答案都是downvoted,除[一](http://stackoverflow.com/a/13100082/605744)。嗯... –