【问题标题】:Understanding recursive async call in JavaScript了解 JavaScript 中的递归异步调用
【发布时间】:2017-08-04 16:23:08
【问题描述】:

这个问题只是为了好奇。 我知道还有其他方法可以做实际的事情。我只是想学习一些异步模式。

我想从根目录开始搜索特定文件。 于是我发现了文件模块:

https://github.com/mikeal/node-utils/tree/master/file

这个模块提供了一个异步 file.walk(start, callback) 函数。 为每个找到的目录调用回调。

想象一下,我想查找所有具有特定名称的文件,将路径保存在一个数组中,然后对它们进行协作处理。

import file = require("file");
var folderArray= []; 
  file.walk(path,function(err,file){
    if(doesExist(file+"/mySpecialFileName")){
      folderArray.push(file);
    }
})
//when all sub directories are searched do something
process(folderArray)

如何确定所有目录都已搜索到并且可以继续处理。 例如在潜水模块中: https://github.com/pvorb/node-dive 我只是将我的 process(folderArray) 放在搜索完成时调用的第三个回调中。

非常感谢。 最佳P

【问题讨论】:

  • 老实说,您引用的那个库看起来一团糟。它混合使用同步和异步文件 I/O,因此不是任何人都应该做的。对我来说,它在递归列出文件时提供任何通知并不明显。您应该以不同的方式执行此操作。要么编写自己的以正确方式执行此操作,要么找到具有更好的文档接口且不使用同步 I/O 的不同模块。
  • 您好,感谢您的回复。我对异步编程很陌生,我只是想知道这个库是否可行。我也写了知道我自己的方法。我花了很长时间才发现这个库不是很好:(。

标签: javascript node.js asynchronous


【解决方案1】:

Async Call:Explained here

回调链是一种选择,但它会创建 回调地狱,所以
改用 Promise 链:Promise Exlpained Here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2019-02-20
    • 2018-01-30
    • 1970-01-01
    • 2018-02-24
    • 2023-03-11
    • 2016-09-21
    相关资源
    最近更新 更多