我是(正如我通常所要做的)與節點的異步本質搏鬥。節點在嵌套異步for循環完成後如何執行某些操作。
我的問題是我正在寫一個抓取腳本,根據這些數據獲取一些數據,獲取更多的數據,根據這些數據獲取更多的數據,然後基於這些做了一堆事情。我的問題是我想在所有這些流程都完成時做些事情,但我完全喪失了這種做法。
在一定範圍內。
(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'或'do'方法都有IO。
您將回調傳遞給原始函數,並用最終結果調用它。 – jfriend00 2014-10-20 01:36:46
使用類似['async'](https://github.com/caolan/async)的流量控制庫來執行此操作並保持您的理智。 – JohnnyHK 2014-10-20 01:37:33
@ jfriend00原始函數已經有回調。 getData已經有一個回調函數,它是循環到每個函數的函數。 – recneps 2014-10-20 01:41:46