我想要在目录中获取文件,打开它们,处理它们并写入结果。 我想要做的所有步骤异步与承诺如何在没有承诺的情况下运行异步承诺?
第一件事情来到我的头是
read_dir('/tmp')
.then(function(files){
for(var i=0; i<files.length; i++){
read_file(files[i])
.then(function(file_data){
var processed_data = process_work_convert(file_data.data);
return {'filename': file_data.name, 'data': processed_data}
})
.then(function(file_data){
return write_file(file_data.filename, file_data.data);
})
.then(function(){
console.log('success');
})
}
})
但它看起来像标准的回调方式(回调地狱)
我可以用Promise.all
但它将使我的代码同步
我想一些神奇的then_each
和catch_each
示例:
read_dir('/tmp')
.then_each(function(file){
return read_file(file);
})
.then_each(function(file_data){
var processed_data = process_work_convert(file_data.data);
return {'filename': file_data.name, 'data': processed_data}
})
.then_each(function(file_data){
return write_file(file_data.filename, file_data.data);
})
.then_each(function(){
console.log('success');
})
.catch_each(function(){
console.log('error');
});
此功能是否存在?
或者您可能知道如何延长Promise来实现这个目标吗?
或者可能有其他方法可以做到这一点?
您的目标是生成文件夹资源管理器吗?你有没有考虑过使用递归方法?有关承诺的更多文档,您还可以查看Mozilla文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise – Cr3aHal0
不,不是文件夹浏览器。我想从文件夹中获取所有日志文件并将其转换为其他格式。 –
“*我可以使用Promise.all,但它会使我的代码同步*” - 等什么?编号 – Bergi