节点如何在嵌套的异步for循环完成后执行某些操作。

时间:2014-10-20 01:34:50

标签: javascript node.js asynchronous

我(我通常必须这样做)与Node的异步性质搏斗。

我的问题是我正在编写一个抓取脚本,根据该数据获取一些数据,获取更多数据,基于该数据获取更多数据,然后基于它做一堆东西。我的问题是我想在所有这些过程完成时做点什么,但我完全失去了方法。

在某个范围内。

(function () {
    getData(function (things) {
        things.forEach(function (thing) {
            getOtherData(thing, function (otherThings) {
                otherThings.forEach(function (otherThing) {
                    getSomeMoreData(thing, otherThing, function (anotherThings) {
                        anotherThings.forEach(function (anotherThing) {
                            getEvenMoreData(thing, otherThing, anotherThing, function (somethingElses) {
                                somethingElses.forEach(function (somethingElse) {
                                    doSomething(somethingElse);
                                });
                            });
                        });
                    });
                });
            });
        });
    });
}());

所以我想在整个过程完成后做点什么。

有没有人对如何做到这一点有任何建议?

只需记下所有' get'或者'做'方法有IO。

1 个答案:

答案 0 :(得分:1)

您可能会考虑使用模块来帮助组织和改进代码的布局/可读性,例如async。它包含常见任务的解决方案,例如异步迭代集合或并行或串行执行函数列表。

相关问题