手机版

如何在Nodejs中实现函数的串行执行

时间:2021-08-27 来源:互联网 编辑:宝哥软件园 浏览:

Nodejs实现了函数的串行执行

众所周知,nodejs使用非阻塞异步io机制,这意味着函数执行和代码编写的顺序可能不同,实际的顺序取决于函数自身的执行速度。这就引出了一个如何在nodejs中编写串行执行代码的问题。想象一下,如果您编写两个函数,一个查询数据库,另一个返回查询结果。如果您不需要连续执行它们,您将在数据库查询完成之前返回结果,这显然是不可能的。因此,串行执行在nodejs中非常有用。那么如何实现呢?

你可能会说在查询数据库函数的回调函数中写返回查询结果的函数就好,但是有开发经验的朋友一定知道,如果情况复杂,就会出现回调地狱的问题,就是一层一层的嵌套,最后不知道自己写了什么,可读性和可维护性都很差。

我们不想改变我们的想法。如果我们把这些要顺序执行的函数放入一个数组中,当一个函数被执行时,我们可以执行数组中的下一个函数。实际上,这是nodejs开源社区中很多串行模块的基本思想。接下来,我们逐步完成这个系列演示:

1.首先,我们定义一个数值来保存函数的执行顺序:

var tasks=[];2.定义将序列化执行函数添加到数值的函数:

函数addTask(task){ tasks . push(task);}3.执行数组中下一个函数的函数:

function next(){ if(tasks . length 0){ tasks . shift());} else { return} }好了,你完成了,然后定义几个测试函数:

var task 1=function(){ console . log(' task 1已完成');next();} var task 2=function(){ console . log(' task 2已完成');next();} var task 3=function(){ console . log(' task 3已完成');next();}开始测试:

添加任务(task 1);添加任务(task 2);addTask(task 3);下一个()

更改顺序:

添加任务(task 1);addTask(task 3);添加任务(task 2);next();

好了,你说完了。基于这个想法,你可以在实际开发中定义一个模块,并将其串联打包,这样你就不用害怕回调地狱问题了。

您也可以使用第三方库,如async。

摘要

以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。谢谢你的支持。如果你想了解更多,请查看下面的相关链接

版权声明:如何在Nodejs中实现函数的串行执行是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。