2014-11-22 127 views
0

我有调用另一个函数2的javascript函数1我的要求是函数1不应该等待函数2的执行。从javascript函数返回而不等待被调用函数

我的函数2调用ajax,使进程延迟导致用户等待,直到我的函数2返回。 只要function1调用function2,我是否可以从function1返回?

+0

使用setTimeout来调用函数2,函数将返回。 – Aravind 2014-11-22 10:28:08

+2

实际上,如果使用它的异步版本,调用ajax不会使进程延迟。 – 2014-11-22 10:30:43

+0

你能提供你的代码吗? – 2014-11-22 10:34:37

回答

1

你可以做这样的事情:

function f() 
{ 
f1(); 
console.log("I'm impatient, can't wait for f1"); 
} 
function f1() 
{ 
setTimeout(function(){f2();},0); 
} 
function f2() 
{ 
// your function which takes a long time to run 
for(var i =0;i<10000000;i++); 
console.log("I'm f2 and I'm finally done!"); 
} 
f(); 

这是如何工作的?

当您调用f1()时,它具有setTimeout函数。 setTimeout看到函数并将其放在事件队列中,并且语句完成。程序控制返回到f(),并且“我不耐烦,等不及f1”被打印,然后当f2完全执行时,“我是f2,我终于完成了!”被打印。

+0

请解释downvote。 – Aravind 2014-11-22 11:55:43

+0

小问题,但它完全等价于说'setTimeout(f2,0)'。 – 2014-11-22 12:13:30

+0

@torazaburo:是的,没错。这是实现OP所需的一种合法方式,我希望人们评论并解释downvote :) – Aravind 2014-11-22 13:46:14