2014-01-14 52 views
0

我有一个函数,包括一个异步函数的函数,但我需要返回第一个异步调用时已解决。我正在尝试使用返回JQuery.当推迟解决

return JQuery.when()  

以下函数是一个简历。

function getData(x){ 
if (x = 1){ 
    return JQuery.when(asynFunction().then(function (data){ 
     (...); 
     return; 
    }); 
} 
else { 
    (...) 
    return; 
} 

} 

目的是在异步调用完成之前getData()不会返回。 有什么想法?

谢谢你的时间!

+0

也许你可以包装jQuery.when方法内的函数? return function(){jQuery.when(...)} – abidibo

回答

1

假设asynFunction()回报承诺,getData可能,在其最简单的,看起来像这样:

function getData(x) { 
    if (x = 1) { 
     return asynFunction(); 
    } 
    else { 
     var myValue = 'whatever'; 
     return myValue; 
    } 
} 

但是它往往是更好的(虽然不是绝对必要的)安排的功能在所有返回的承诺情况。这保证了在调用getData()的任何地方,即使它是同步派生的,也可以异步方式处理结果(最终使用.then.done())。

function getData(x) { 
    if (x = 1) { 
     return asynFunction(); 
    } 
    else { 
     ... 
     var myValue = 'whatever'; 
     return jQuery.when(myValue); 
    } 
}