返回JQuery.When延迟解决

时间:2014-01-14 11:25:54

标签: javascript jquery jquery-deferred

我有一个函数包含异步函数的函数,但我需要在异步调用解析后返回第一个函数。我正在尝试使用

return JQuery.when()     

以下功能是简历。

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

}

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

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

假设asynFunction()返回Promise,getData可能最简单,如下所示:

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

然而,在所有情况下安排函数返回Promise通常更好(尽管不是绝对必要)。这保证了无论何处getData()被调用,结果都可以以异步方式处理(最终使用.then.done()),即使它是同步派生的。

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