2014-01-14 2 views
0

У меня есть функция, которая включает функцию для функции async, но мне нужно вернуть первый, когда асинхронный вызов был разрешен. Я пытаюсь использоватьВозврат JQuery.When отложен разрешен

return JQuery.when()  

Следующая функция - это резюме.

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

} 

Цель состоит в том, что getData() не возвращается до завершения асинхронного вызова. Любая идея?

Спасибо за ваше время!

+0

Возможно, вы можете обернуть метод jQuery.when внутри функции? Функция возврата() {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); 
    } 
} 
Смежные вопросы