我将如何执行for循环,直到每个循环的功能完成?

时间:2020-02-27 04:24:08

标签: javascript node.js for-loop

我当前的代码是这样:

const fs = require('fs');
var file = fs.readFileSync('file.txt').toString().split("\n");

for(i in file) {
    var [thing1, thing2, thing3] = file[i].split(":");
    myfunction(thing1, thing2, thing3);
}

这将使用文件中的一些信息为文件中的每一行执行一个功能。由于技术原因,该功能一次只能运行一次。 如何让for循环等待函数完成然后再次循环?

2 个答案:

答案 0 :(得分:1)

如果我的功能是同步功能之一,则说明您的代码已经可以使用

其他方式:

Get-Content (Get-PSReadlineOption).HistorySavePath

确保在代码块中添加异步

await myfunction(thing1, thing2, thing3);

答案 1 :(得分:0)

我的方法是使myfunction await像这样:

async function myfunction (thing1, thing2, thing3) {
    // perform your operations here
    return 'done'; // return your results like object or string or whatever
}

这样它就可以for循环等待每次迭代完成,如下所示:

const fs = require('fs');
const file = fs.readFileSync('file.txt').toString().split("\n");

// This main function is just a wrapper to initialize code
async function main() {
    for(i in file) {
        let [thing1, thing2, thing3] = file[i].split(":");
        let result = await myfunction(thing1, thing2, thing3);
            console.log(`Result of ${i} returned`);
    }
}

main();

对于完整的示例运行克隆node-cheat,然后运行node loop-await.js