Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点Js中的回调函数问题?_Javascript_Node.js - Fatal编程技术网

Javascript 节点Js中的回调函数问题?

Javascript 节点Js中的回调函数问题?,javascript,node.js,Javascript,Node.js,我使用的是NodeJS,在我的代码控制器、服务和DAO中有三层。执行流通过服务从控制器到DAO,控制再次从DAO返回到控制器。DAO层中有回调函数,用于将输出设置为变量。但问题是,回调函数是在控制返回控制器后执行的。我最终得到了一个未定义的变量作为输出。这是因为节点是异步的 是否有办法更改此流,以便第一个回调函数完成执行,然后控制从DAO返回到服务和控制器。您必须将部分代码传递给DAO层,这些代码应该在DAO完成后作为回调执行。这通常看起来有点难看,但这是node.js(异步)方式,有时称为“”

我使用的是NodeJS,在我的代码控制器、服务和DAO中有三层。执行流通过服务从控制器到DAO,控制再次从DAO返回到控制器。DAO层中有回调函数,用于将输出设置为变量。但问题是,回调函数是在控制返回控制器后执行的。我最终得到了一个未定义的变量作为输出。这是因为节点是异步的


是否有办法更改此流,以便第一个回调函数完成执行,然后控制从DAO返回到服务和控制器。

您必须将部分代码传递给DAO层,这些代码应该在DAO完成后作为回调执行。这通常看起来有点难看,但这是node.js(异步)方式,有时称为“”。如果您需要更多信息,请提供一些代码示例,说明您正在尝试执行的操作

首先,您可能希望尝试使用异步库:或“npm install async”。听起来您可能需要的是async.series(),它允许您构造某些回调集以按顺序运行,从而可以更好地控制程序流。这里有很好的教程:

Node.js的整个思想是异步的。因此,甚至不要试图解决这个问题,更好地调整您的设计。