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