我想获得“记录”,其中每个包含“字段对象”(每个具有属性.name,.value和.fid)数组的数组。返回数组的对象与延迟
每个记录数组通过API调用通过对数据库的AJAX调用获得。
我希望能够通过一些其他代码在后面进行迭代,但是,目前,我正在试图获取数组的结果数组。
我会说实话,我和如何与承诺做到这一点挣扎......
如果我这样做同步我会用一种向循环,并在每次迭代推到一个数组,但异步造成我的问题...
我现在的代码如下。这将返回一个单独的字段数组,而不是一个数组数组。我想我需要将每个'thisArray'推送到另一个阵列。任何人都愿意帮助?:
注:
ridList是DB记录ID的简单数组,例如: “391”, “392”, “393”, “394”, “395”,“ 398“,”399“,”400“,”396“,”397“,”437“]
AVMI_db是AJAX调用从其获取数据的URL。
///////////////////////////////////////////////////////////////
// Get record info for each array member
///////////////////////////////////////////////////////////////
function AVMI_getMultipleRecordInfoFromArray(ridList, AVMI_db) {
var promises = [];
$.each(ridList, function (index,value) {
var def = new $.Deferred();
var thisArray = [];
$.get(AVMI_db, { //******* ITERATIVE AJAX CALL *******
act: 'API_GetRecordInfo',
rid: value
}).then(function(xml2) {
$(xml2).find('field').each(function() {
var $field = {};
$field.fid = $(this).find('fid').text();
$field.name = $(this).find('name').text();
$field.value = $(this).find('value').text();
thisArray.push($field);
});
def.resolve(thisArray);
});
promises.push(def);
});
return $.when.apply(undefined, promises).promise();
};
不是一般的重复,但你可能会在这里找到你的答案,因为有诺言大量的信息和递延:http://stackoverflow.com/questions/14220321/how-do-i-return-the-来自异步电话的响应/ 14220323 –