2 回答

TA贡献1806条经验 获得超5个赞
很明显,您的一个承诺没有解决。为什么要resolve()在您的formatData()方法中进行有条件的调用?为什么不让循环用完?
function formatData(data) {
var finArr = Array();
return new Promise(function(resolve, reject) {
data.rows.forEach(function(row, fin) {
var tempArr = Array();
row.forEach(function(itm, pos) {
var ttl = data.metaData[pos].name;
var val = itm;
tempArr[ttl] = val;
});
finArr.push(tempArr);
});
resolve (finArr);
});
}
事实上,这里根本不需要 Promise,因为它是一个同步操作。而且,可以在.next()链中使用同步操作。像这样。
function formatData(data) {
var finArr = Array();
data.rows.forEach(function(row, fin) {
var tempArr = Array();
row.forEach(function(itm, pos) {
var ttl = data.metaData[pos].name;
var val = itm;
tempArr[ttl] = val;
});
finArr.push(tempArr);
});
return finArr;
}

TA贡献1793条经验 获得超6个赞
该问题与正确解决的承诺无关。问题在于我如何格式化我的数据以发送回客户端。我正在使用以下代码构建一个关联数组的数组。当它被发送到客户端时,它被作为一个空白数组发送。
data.rows.forEach(function(row, fin) {
var tempArr = Array();
row.forEach(function(itm, pos) {
var ttl = data.metaData[pos].name;
var val = itm;
tempArr[ttl] = val;
});
finArr.push(tempArr);
});
return finArr;
我需要做的是将数据作为对象数组发送,然后在客户端将其转换为数组数组。通过将我的代码调整为此,数据可以根据需要正确传递。
data.rows.forEach(function(row, fin) {
// Change From var tempArr = Array() to var tempArr = {} to initialize new Object
var tempArr = {};
row.forEach(function(itm, pos) {
var ttl = data.metaData[pos].name;
var val = itm;
tempArr[ttl] = val;
});
finArr.push(tempArr);
});
return finArr;
添加回答
举报