我是一个节点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))));
以上方式是对的吗?或任何其他好方法来实现这一目标?
答案 0 :(得分:0)
我建议您阅读https://stackoverflow.com/a/42765120/3825764。它们允许您在异步代码返回后立即运行代码。另请参阅@AnnaFohlmeister的评论中提到的promises。
Promise是一种更高级(更清晰)的回调实现,可以在异步代码完成后允许更复杂的操作链接。使用回调你往往会遇到所谓的“回调地狱”,你将有很多不同的动作嵌入到许多回调中,并且不容易以模块化的方式编写(比如改变哪些操作在结束后做什么)呼叫)。
至于你的代码,使用回调是正确的,尽管在回调中定义excel(result, callback())
删除()
因为在初始化函数时很可能会混淆节点。另外我假设您的excel
函数在其中进行了另一次异步调用。