jQuery return 值 deferred.then 在函数中成功

jQuery return value of deferred.then success when in function

我写了一个函数,我想 return 一个成功的延迟函数的结果。但是,由于我想要 returned 的值在 doneCallbacks 的范围内,因此 runSearch() 函数 return 在 运行 console.log(runSearch()) 时未定义.如何让包含函数 return 成功 deferred.then() 的 returned 值?

function runSearch(){   
    $.get( "search.php" ).then(
      function() {
        // I want runSearch() to return the results of this function 
      }, function() {
        console.log( "$.get failed!" );
      }
    );
}

编辑: 感谢大家的帮助。因为我的目标是在函数中使用 return 值,所以我只是将函数包含在 doneCallbacks 中。

function runSearch(){   
    $.get( "search.php" ).then(
      function() {
        var returnValue = 'Return Value'
        function doSomethingWithReturn(returnValue) {
            console.log(returnValue);
        }
        doSomethingWithReturn(returnValue);
      }, function() {
        console.log( "$.get failed!" );
      }
    );
}
runSearch(); // successfully logs returnValue to console.

可能不是最优雅的解决方案,但适用于这种情况。

你不能那样做。

相反,您需要 return 承诺,然后使所有调用该函数的代码也异步。

有关详细信息,请参阅 my blog