我正在努力获得一系列"记录"每个包含一个"字段对象数组" (每个都有属性.name,.value和.fid)。
每个记录数组都是通过API调用对数据库进行AJAX调用获得的。
我希望能够稍后使用其他代码迭代这些代码,但是,目前,我正试图获得最终的数组数组。
我说实话,我正在努力解决如何用承诺做到这一点......
如果我同步这样做,我会使用FOR TO循环并将每次迭代推送到一个数组中,但异步会导致我出现问题...
我目前的代码如下。这将返回单个字段数组,而不是数组数组。我想我需要推动每一个“这个阵营”。到另一个数组。谁愿意帮忙?:
注意:
ridList是一个简单的DB记录ID数组,例如:[" 391"," 392"," 393"," 394&#34 ;," 395"," 398"," 399"," 400"," 396",&#34 ; 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();
};
答案 0 :(得分:0)
也许我在这里遗漏了一些东西,如果我不明白你想要什么,请随时评论。我认为你想得到一个数组而不是一个字段数组。为此,您在自己的问题中给出了答案:
我想我需要将每个'thisArray'推送到另一个数组。
但令我困惑的是让我觉得我可能误解了一些东西,如果你可以做一些有点复杂的代码,我认为你可以做一个简单的改变(或者你在某个地方有这个代码? ), 但无论如何... 我无法测试这个,因为我必须创建整个API调用,但它应该如下:
///////////////////////////////////////////////////////////////
// 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.push($(this).find('fid').text());
$field.push($(this).find('name').text());
$field.push($(this).find('value').text());
thisArray.push($fields);
});
def.resolve(thisArray);
});
promises.push(def);
});
return $.when.apply(undefined, promises).promise();
答案 1 :(得分:0)
您可以创建一个数组,该数组在迭代调用时填充,并在执行promise后返回数组。
function AVMI_getMultipleRecordInfoFromArray(ridList, AVMI_db) {
var promises = [];
var returnValue = []; // to be returned by the promise
$.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);
});
returnValue.push(thisArray);
def.resolve(thisArray);
});
promises.push(def);
});
return $.when.apply(undefined, promises).then(function() {
return returnValue;
}).promise();
};