节点js - 如何按顺序执行作业

时间:2017-03-27 14:45:39

标签: javascript node.js sequential

我是一个节点js初学者。我想按顺序在Node js中做一些Job。

Fetch from DB -> Do some operation ->  export as excel -> Mail 

由于Node js async,我需要编码如下吗?

function fetchDB();
function operation(results,callback);
function excel(result,callback());
function mail(result);

fetchDB(operation(results,excel(result,mail(result))));

以上方式是对的吗?或任何其他好方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

我建议您阅读https://stackoverflow.com/a/42765120/3825764。它们允许您在异步代码返回后立即运行代码。另请参阅@AnnaFohlmeister的评论中提到的promises

Promise是一种更高级(更清晰)的回调实现,可以在异步代码完成后允许更复杂的操作链接。使用回调你往往会遇到所谓的“回调地狱”,你将有很多不同的动作嵌入到许多回调中,并且不容易以模块化的方式编写(比如改变哪些操作在结束后做什么)呼叫)。

至于你的代码,使用回调是正确的,尽管在回调中定义excel(result, callback())删除()因为在初始化函数时很可能会混淆节点。另外我假设您的excel函数在其中进行了另一次异步调用。