javascript - Node Js 实际上是异步的吗?

标签 javascript node.js express

我看到这篇文章:https://www.codementor.io/nodejs/tutorial/manage-async-nodejs-callback-example-code ,在运行代码后,我确认 nodejs 是异步的。 但是我创建了 2 个 js 文件来再次测试 nodejs 的异步特性。

文件 1:callback_example.js

exports.countless = function(callback){
    var date = new Date();
    console.log("*" + date.getSeconds());
    var x = 0;
    for(var i = 1; i <= 1000000000; i++){
        x++;
    }
    callback(x);
    date = new Date();
    console.log("**" + date.getSeconds());
}

exports.check = function(callback){
    var date = new Date();
    console.log(date.getSeconds());
    callback(123);
    date = new Date();
    console.log(date.getSeconds());
}

文件 2:call.js

var call = require('./callback_example');

call.countless(function(x){
    console.log(x);
});

call.check(function(x){
    console.log(x);
});

当我在终端中以 Node 调用 的形式执行 call.js 时,我看到 在 unnominous() 完成后,check() 运行。这意味着nodejs是同步的?为什么?谁能帮我回答一下?非常感谢!

最佳答案

当您调用 call.countless() 时,它正在执行该函数,但是其中没有任何阻塞 I/O。所以Runtime忙着做for循环操作。如果您编写过任何阻塞 I/O 操作,那么您就会看到 NODE JS 的异步特性。

例如,阻塞 I/O 操作:文件读取/写入、超时、数据库操作、Ajax 调用

for 循环完成后,Interpreter 转到第二个函数。

关于javascript - Node Js 实际上是异步的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37366477/

相关文章:

javascript - 从内联代码 aspx 调用 javascript 函数

node.js - 如何从 ExpressJS 返回一个数组?

node.js - vue + vite + ubuntu 20 个错误

javascript - Express app.use 不发送正确的假数据

javascript - 如何将连接结果保存在nodeJs中的变量中

javascript - 如何将 javascript 对象传递给 C# MVC 4 Controller

javascript - 如果使用 js 在我的网站上没有图像,如何设置手动默认图像?

javascript - 如何将项目从一个桶移动到另一个 - DragulaJS-Angular

node.js - Firebase函数: koa. js服务器如何部署

javascript - net::ERR_CONNECTION_REFUSED 错误 jQuery ajax node.js