【发布时间】:2021-02-03 17:18:45
【问题描述】:
当大数据处理不正常时如何逐个执行for循环我想使用node.js开发这样的相同逻辑。
result1是这样的
[
{
"FNODE_ID": "30015",
"END_TIME": "2021-02-03",
"START_TIME": 57,
"C1": "[2206.888,2206.859,0.028999999999996362]",
"TOTAL": 6
},
{
"FNODE_ID": "30015",
"END_TIME": "2021-02-03",
"START_TIME": 56,
"C1": "[2206.854,2206.815,0.03899999999975989]",
"TOTAL": 8
},
{
"FNODE_ID": "30015",
"END_TIME": "2021-02-03",
"START_TIME": 55,
"C1": "[2206.809,2206.766,0.04300000000012005]",
"TOTAL": 9
},
{
"FNODE_ID": "30015",
"END_TIME": "2021-02-03",
"START_TIME": 54,
"C1": "[2206.76,2206.728,0.032000000000152795]",
"TOTAL": 7
}
]
这是嵌套的for循环
var fvalue1 = {}
for (var j = 0; j < result1.length; j++) {
for (var node in nodeParameterObj) {
if (result1[j]['FNODE_ID'] == node) {
if ('undefined' == typeof fvalue1[node]) {
fvalue1[node] = {}
}
for (var parameter in nodeParameterObj[node]) {
if ('undefined' == typeof fvalue1[node][parameter]) {
fvalue1[node][parameter] = {}
}
if (result1[j][nodeParameterObj[node][parameter]] != null) {
var a = JSON.parse(result1[j][nodeParameterObj[node][parameter]])
a.push(0, 0, 0);
a.push(result1[j]['TOTAL']);
fvalue1[node][parameter] = a.toString();
}
}
}
}
}
最终输出是
{
"30015": {
"C1": {
"54": "2206.76,2206.728,0.032000000000152795,0,0,0,7",
"55": "2206.809,2206.766,0.04300000000012005,0,0,0,9",
"56": "2206.854,2206.815,0.03899999999975989,0,0,0,8",
"57": "2206.904,2206.859,0.04500000000007276,0,0,0,9"
}
}
}
但它不处理大量数据 我正在尝试这样
var processResult = function(callback){
async.forEach(result1, function (item, callback){
console.log(item);
callback();
}, function(err) {
console.log('iterating done');
});
}
processResult(function(err, users) {
resolve(fvalue1);
});
但是控制台不打印任何值
【问题讨论】:
-
所有这些代码都是同步的,所以不清楚你想用你的循环做什么不同的事情。请说明您究竟需要什么帮助?
-
现在检查更新的问题
-
如果您立即同步调用
callback(),async.forEach根本不是异步的。
标签: javascript node.js asynchronous