Node.Js 中的异步问题 - 如何执行一系列操作? [复制]
Posted
技术标签:
【中文标题】Node.Js 中的异步问题 - 如何执行一系列操作? [复制]【英文标题】:Async problems in Node.Js - how to perform a sequence of actions? [duplicate] 【发布时间】:2014-07-14 16:36:59 【问题描述】:我需要对一个变量执行一系列操作,其中上一个操作的输出将是下一个操作的输入。
此外,如果输入格式不正确,则可能在每个步骤中整个过程中止。
我知道这可以通过回调函数来完成,但是我有太多的步骤会变得一团糟。
有没有人知道我可以使用一个好的解决方案来避免这种情况?只是一个模块,它有助于按顺序执行操作?还是其他技术?
谢谢!
【问题讨论】:
我认为你应该改变你所采取的方法并考虑到 Node 异步模型来解决它 Q 可能有帮助 github.com/kriskowal/q @Dalorzo 你有什么建议?使用承诺?有 10 个步骤的嵌套函数? 【参考方案1】:听起来async.waterfall 可能就是您要找的东西。
就提前中止而言,async
没有简单的方法来做到这一点,但我通常所做的是使用“假”错误实例调用回调,然后在最终回调中,我检查“假”错误与真实错误(通常我会添加一些属性,例如 'err.abort = true;` 并检查)。
【讨论】:
你是我的救星!非常感谢,@mscdex。我已经和它战斗了 12 个小时,你的建议就像魔法一样奏效!【参考方案2】:如果您使用Async.js。您可以使用async.whilst 或async.until
var count = 0;
async.whilst(
function () return count < 5; ,
function (callback)
count++;
setTimeout(callback, 1000);
,
function (err)
// 5 seconds have passed
);
第一个函数用于条件检查。第二个函数实际上是逻辑,你可以保存结果并将其重新用作新的输入。
【讨论】:
感谢您的建议。虽然它不能满足我的需要,但对于代码的另一部分来说这是一个非常好的主意。以上是关于Node.Js 中的异步问题 - 如何执行一系列操作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章