编辑
感谢所有答案,
最后我决定使用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
});
希望这可以帮助。
编辑结束
众所周知,
Node 的内置或第三方模块通常会提供异步 API,
并使用“回调”函数来处理结果。
这很酷,但有时会像这样编写代码:
//some codes
}
}
}
}
像这样的代码很难阅读。
我知道“延迟”库可以解决这样的问题,
Node 有什么好的“延迟”模块吗?
如果我使用“延迟”对 Node 进行编码,性能如何?