如何在 Node.js 中首先执行所有控制台日志?
How Does All Console Logs Get Executed First In Node.js?
我理解 Node.js 是异步的,使用事件循环执行 I/O 任务。
我知道您的代码将首先从上到下进行解析,然后再执行用户定义的回调(如果有的话)。
根据我的理解,写入控制台也是一种 I/O 操作形式(也许我认为它也是一个 I/O 任务是错误的。如果我错了需要解释)
所以我不明白的是 how/why 是否首先执行所有控制台日志,无论脚本中的位置如何,因为它也是 I/O 任务的一种形式?
事实上,NodeJs中的函数和JavaScript是同步的,但是,你可以把你的函数改成异步的。下面我引用了例子。
1. resetPassword: async function (req, res, next) {
2. let user = await userService.resetPassword(res.body.email);
3. console.log(user);
4. }
在上面的这个例子中,我创建了基于异步的函数,在第 2 行将等待处理直到响应。
最后,第 3 行将打印一些关于用户的信息。
是的,console.log也是I/O操作的一种形式,您可以查看this答案了解更多详情。
我理解 Node.js 是异步的,使用事件循环执行 I/O 任务。 我知道您的代码将首先从上到下进行解析,然后再执行用户定义的回调(如果有的话)。
根据我的理解,写入控制台也是一种 I/O 操作形式(也许我认为它也是一个 I/O 任务是错误的。如果我错了需要解释)
所以我不明白的是 how/why 是否首先执行所有控制台日志,无论脚本中的位置如何,因为它也是 I/O 任务的一种形式?
事实上,NodeJs中的函数和JavaScript是同步的,但是,你可以把你的函数改成异步的。下面我引用了例子。
1. resetPassword: async function (req, res, next) {
2. let user = await userService.resetPassword(res.body.email);
3. console.log(user);
4. }
在上面的这个例子中,我创建了基于异步的函数,在第 2 行将等待处理直到响应。
最后,第 3 行将打印一些关于用户的信息。
是的,console.log也是I/O操作的一种形式,您可以查看this答案了解更多详情。