代码之家  ›  专栏  ›  技术社区  ›  Mig82 Ali

如何在中迭代带有承诺的文件节点.js

  •  0
  • Mig82 Ali  · 技术社区  · 7 年前

    |
    |-foo.json
    |-bar.json
    |-qux.json
    |-baz.json
    |-zot.json
    

    每个JSON文件都有一个属性 children

    foo.json文件

    {
        "id": "foo",
        ...
        "children": [
            "bar.json",
            "baz.json"
        ]
        ...
    }
    

    这么说吧bar.json文件没有一个 儿童

    {
        "id": "baz",
        ...
        "children": [
            "zot.json"
        ]
        ...
    }
    

    我正在尝试编写一个Node程序,它将列出给定JSON文件的后代。意思是为了 foo.json 它应该输出 [bar, baz, zot]

    fs-extra 读取JSON文件。

    如果我是同步的,我会写这样的东西:

    const fs = require('fs-extra');
    
    var descendants = ["foo.json"];
    for(var k = 0; k < descendants.length; k++){
        var obj = fs.readJsonSync(descendants[k]);
        if(obj.children) descendants.concat(obj.children);
    }
    return descendants;
    

    注:

    但我想用承诺来做这件事。我的问题是我似乎无法解决每个文件的承诺并将结果添加到 descendants

    用承诺来做这件事的正确方法是什么?特别是,我一直在尝试使用 Q.js reduce 但到目前为止我还不能正确地编写代码。

    0 回复  |  直到 7 年前
    推荐文章