0

我正在使用 jQuery$.when函数来同步$.getJSON我拥有的两个异步调用。合并来自两个调用的数据现在可以正常工作,但是我想返回 merge 的内容,这是一个 jQuery 对象数组。

我正在尝试使用$.when包装在另一个函数中的函数来实现这一点,该函数包含我同步异步调用的代码。我的代码如下所示:

 $.fn.getResultFromMergedJsonCalls = function(params){
    $.when( 
    $.fn.jsonCall1(params), $.fn.jsonCAll2(params)
     ).then(function(){
       var mergedData = mergeResults(resultOfJsonCAll1,resultOfJsonCAll2)
           return mergedData;
    });
   };
)

如何将mergedData数组的内容返回给调用函数,我知道异步调用的性质导致了这种行为,所以我只需要一个解决问题的模式。谢谢。

4

2 回答 2

3

将回调函数传递给 getResultsFromMergedJsonCalls,然后从then处理程序调用回调。例如:

$.fn.getResultFromMergedJsonCalls = function(params, success){
$.when( 
$.fn.jsonCall1(params), $.fn.jsonCAll2(params)
 ).then(function(){
   if (success) {
       var mergedData = mergeResults(resultOfJsonCAll1,resultOfJsonCAll2);
       success(mergedData);
});

};

getResultsFromMergedJsonCalls 的调用者当然必须实现一个合适的函数来作为新的回调参数传递。

于 2011-12-16T14:35:14.367 回答
2

那是异步的;你不能退货。

相反,您需要使用回调将值传回。

于 2011-12-16T14:31:35.107 回答