【发布时间】:2016-12-16 05:35:35
【问题描述】:
我想在Node.js中创建一个异步方法链,例如:
function functionA(data, callback){
console.log("A")
// do something here
callback();
}
function functionB(data, callback){
console.log("B");
// do something here
callback();
}
function functionC(data, callback){
console.log("C");
// do something here
callback();
}
每个函数都是独立的,但是当被链接时,它们可以被有序地调用。例如:
functionA(data).functionC(data).functionB(data)
将打印A,然后是C,然后是B。链的顺序可以不受限制地重新排列。
以下是我搜索过的内容:
- Create chained methods in node.js?, --> 这是关于这个主题的上一个问题,很老,也不是异步的
- http://www.dustindiaz.com/async-method-queues/ --> 依赖 jquery,客户端脚本,不是节点,不是异步
- https://github.com/FuturesJS/FuturesJS/tree/v3 --> 已弃用,具有链化功能的较新版本 (3) 未完成。看起来像一个废弃的项目
- 我经常使用 async,我知道瀑布、系列和许多我经常使用的函数,我只是想将它重新排列成更简单的东西,以便在多个地方使用。我考虑如何“链接”它们,以便在其他文件中我可以使用相同的方法。
这就是为什么async 不是我期望的答案。
考虑会计问题,如果有一笔总额为 1200 美元的卖出交易,首先我必须将 1200 美元存入资产:现金账簿(借方),然后我必须将 1200 美元存入收入账簿(贷方)。异步是否可行?是的当然。它看起来像这样:
async.series([
function(callback){
bookLibrary.debit('cash', 1200, callback);
},
function(callback){
bookLibrary.credit('income', 1200, callback);
}
]);
所以我想通过链接它们使其更简单和更易于阅读,如下所示:
bookLibrary.debit('cash', 1200).credit('income', 1200)
【问题讨论】:
-
这里需要链接什么?如果需要按顺序执行它们,请转到
asynclibrary -
也许
async.series就是你要找的东西 caolan.github.io/async/docs.html#series -
Javascript 承诺也可以使用 .then() 进行链接,这是执行一系列异步任务的另一种方法。
-
现在您不需要创建链接方法。您使用现有的一种便于链接的方法。
-
您可以阅读有关 jQuery 如何使用队列链接动画的信息。
标签: javascript node.js