Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript async for循环导致函数以静默方式终止_Javascript_Node.js - Fatal编程技术网

Javascript async for循环导致函数以静默方式终止

Javascript async for循环导致函数以静默方式终止,javascript,node.js,Javascript,Node.js,您好,我正在尝试了解以下代码中发生了什么: 从“fs”导入fs; 从“util”导入util; 从“split2”导入split2; 异步函数main(){ const files=wait fs.promises.readdir(“…”); for(文件常数){ 常量s=fs.createReadStream(“../”+f); 常数ss=s.pipe(split2()); s、 on(“错误”,(错误)=>{ 控制台日志(err); }); 等待(ss的常数l){ } 控制台日志(f);

您好,我正在尝试了解以下代码中发生了什么:

从“fs”导入fs;
从“util”导入util;
从“split2”导入split2;
异步函数main(){
const files=wait fs.promises.readdir(“…”);
for(文件常数){
常量s=fs.createReadStream(“../”+f);
常数ss=s.pipe(split2());
s、 on(“错误”,(错误)=>{
控制台日志(err);
});
等待(ss的常数l){
}
控制台日志(f);
}
控制台日志(“返回”);
返回“完成”;
}

main()您没有在
for await(const l of ss){…}
循环中处理错误。当您尝试在目录上运行此操作时,您的
for await
循环将拒绝,并且由于您没有捕获或处理该拒绝,containing
async
函数也将拒绝,程序将停止

您可以尝试在wait
循环的
周围放置一个try/catch,看看是否有效。但是,我在wait
流的
特性中发现了许多bug,甚至提交了一些bug。如果打开文件时出错或读取文件时出错,则会出现错误,因此此功能只是个错误,出于这个原因,我决定不在代码中使用它


另外,请注意,由于无法从嵌套的事件处理程序中拒绝
async
函数,因此您没有一种很好的方法从
error
事件返回错误。总的来说,流及其事件与基于承诺的编程不能很好地结合。有一些方法可以提示一些流事件,但要使流与承诺一起工作,这是一项正在进行的工作。

此文件夹中是否也有目录?例如,一个
node\u modules
目录?@ChrisG yes,事实上它显示在第二个runYes中,我试图捕捉错误,但实际上它不起作用;事实上,我在考虑实现中的一些bug,但我希望这只是我的错:-)你能指出你提出的一些bug吗?感谢you@FulvioD安东尼奥-这里有一个:谢谢你,我想我也会避免使用这个功能,即使它看起来很方便…@FulvioD'Antonio-这里有另一个相关的bug(我没有存档):。好的,现在我对正在发生的事情有了更好的了解…谢谢