2 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
很明顯,您的一個(gè)承諾沒有解決。為什么要resolve()在您的formatData()方法中進(jìn)行有條件的調(diào)用?為什么不讓循環(huán)用完?
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);
});
}
事實(shí)上,這里根本不需要 Promise,因?yàn)樗且粋€(gè)同步操作。而且,可以在.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貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
該問題與正確解決的承諾無關(guān)。問題在于我如何格式化我的數(shù)據(jù)以發(fā)送回客戶端。我正在使用以下代碼構(gòu)建一個(gè)關(guān)聯(lián)數(shù)組的數(shù)組。當(dāng)它被發(fā)送到客戶端時(shí),它被作為一個(gè)空白數(shù)組發(fā)送。
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;
我需要做的是將數(shù)據(jù)作為對(duì)象數(shù)組發(fā)送,然后在客戶端將其轉(zhuǎn)換為數(shù)組數(shù)組。通過將我的代碼調(diào)整為此,數(shù)據(jù)可以根據(jù)需要正確傳遞。
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;
添加回答
舉報(bào)