因此,我无法强制for循环在执行下一次迭代之前等待流关闭。
似乎流数据和异步/等待似乎不相处(尤其是在for循环中)。可能的解决方法是将所有内容放入无限while循环(而不是for循环),然后使用POSIX互斥锁类型方法(设置了一个标志,阻止打开一个流,直到该流关闭时该标志被重置为止)。 ,并且计数器会更新)。但是必须有某种方法可以使用async / await来完成它。
下面是一些测试代码:
async function bulk_search(an_array)
{
var name = "";
var found = false;
for(let i = 0; i < 10; i++)
{
for(let j = 0; j < 10; j++)
{
for(let k = 0; k < 10; k++)
{
console.log(i + ", " + j + ", " + k);
file_stream = fs.createReadStream(__dirname + '/a_directory/a_file.csv');
file_stream.on('error', function (err) {
return an_array;
});
csv_file = readline.createInterface({
input: file_stream
});
name = an_array[i][j][k];
found = false;
csv_file.on('line', function (line) {
if(name == line)
{
found = true;
csv_file.close();
}
});
await csv_file.on('close', function() {
console.log("Closing Stream");
if(found == false)
{
an_array[i][j][k] = "";
}
if((i == 9) && (j == 9) && (k == 9))
{
return an_array;
}
});
}
}
}
}