Async for loop nodeJS

时间:2017-03-08 14:03:47

标签: node.js asynchronous

我有一个包含异步函数的简单for循环,我的问题是循环遍历所有值,然后只执行内部的异步函数。

    <img src="images/model1.jpg" alt="model women 1">
    <img src="images/model2.jpg" alt="model women 2">
    <img src="images/model3.jpg" alt="model women 3">

所以它打印在数组中的每个元素的外部,然后它只在所有outised之后打印,我希望有一个外部然后和内部等等。我查看了https://www.promisejs.org/,但我不确定如何使用我的代码实现这一点。

1 个答案:

答案 0 :(得分:1)

您可以使用lodash.eachSeries,但这不是最佳解决方案。如果我是你,我会尝试将for循环中的所有内容移动到一个函数中,这样你就可以在里面看到所有变量。 更像这样:

function calculate(value){
    calculatePower(value);
    var octopusMAC = getOctopusIDFromRaw(value);
    var channelID = getChannelIDFromRaw(value);
    console.log("outside")
    getChannelCTSize(octopusMAC, channelID, function (result) {
        console.log("inside")
        var timestamp = convertDateTimeToInt(transmission.date);
        var adcTicks = getAdcTicksFromRaw(value);
        var power = convertAdcTicksToAmps(parseInt(adcTicks, 16), result);
        console.log("channelID: " + channelID + " ADC ticks HEX: " + adcTicks + " timestamp: " + timestamp + " power for " + result + "A CT Size: " + power);
    });
}

for(key in splitedDataArray){
    calc(splitedDataArray[key]);
}

它不会打印出来:out / in / out / in,但会在每个循环中获得良好的值。 如果你需要那个订单/出/出/出/我将从lodash为每个系列。