THX到所有的答案,
最後我決定使用一些工具,如Step,
所有我需要的是「流量控制」和不想要其他任何可能會降低表現的東西(我不知道它會影響到多少,或者效果可以忽略不計)。
所以我只是爲了流量控制創建一個小工具:
line.js
/**
* Create the "next" function
*
* @param {Array} tasks
* @param {Number} index
* @param {Number} last
*/
var next = function(tasks, index, last) {
if (index == last) {
return tasks[index + 1];
}
else {
return function(data) {
var nextIndex = index + 1;
tasks[nextIndex](next(tasks, nextIndex, last), data);
};
}
};
/**
* Invoke functions in line.
*/
module.exports = function() {
var tasks = arguments,
last = tasks.length - 2;
tasks[0](next(tasks, 0, last));
};
用法:
var line = require("line.js");
line(function(next) {
someObj.find(function(err, docs) {
// codes
next(docs);
});
}, function(next, docs) {
// codes
});
希望這有助於。
編輯結束
由於都知道,
節點的內置或第三部分的模塊通常提供異步API,
和使用「回調」的處理結果的功能。
這很酷,但有時會這樣的代碼:
//some codes
}
}
}
}
這樣的代碼是難以閱讀。
我知道「延期」庫可以解決這個問題,
有什麼好的「延期」模塊的節點?
如果我用「deferred」編碼Node,性能如何?
它的默認代碼風格...怎麼可能是難以閱讀?不明白。 – Cynede 2012-04-23 10:23:19
您不需要延期,您需要正確使用控制流程。也知道學會有效地利用回調 – Raynos 2012-04-23 11:20:41