我对节点中的“非阻塞”的理解是否正确?

人们有时会把下面的callback模式称为asynchronous。

function beAsync(msg, cb){ cb(msg); } beAsync("a", function(msg){ console.log(msg); }); console.log("b"); 

什么人有时会说beAsync允许其余的代码运行,然后callback发生在准备就绪时。

当我最初调用beAsync和真正的asynchronous函数(如fs.readFile ,必须有一些代码同步运行, 然后发生一些事情 ,允许readFile代码允许其余的代码被允许运行。

我正确地说,代表callback的东西进入一个低于JavaScript的循环吗?

所以beAsync的修改将包括一个setTimeout。

 function beAsync(msg, cb){ setTimeout( function(){ cb(msg) }, 1); } 

所以setTimeout和readFile的内部可以讲一个JavaScript所在的层? 说到这个低层是在JavaScript中实现非阻塞代码的唯一方法?

说到这个低层是在JavaScript中实现非阻塞代码的唯一方法?

这是正确的。 节点只是等式的一部分。 框架本身大量使用线程来pipe理可能会阻塞的事物,如IO。 看着

http://www.quora.com/How-does-IO-concurrency-work-in-node-js-despite-the-whole-app-running-in-a-single-thread

当我最初调用beAsync和真正的asynchronous函数(如fs.readFile)时,必须有一些代码同步运行,然后发生了一些事情,允许readFile代码允许其余的代码被允许运行。

这不是很详细,但从高水平来看是正确的。 每当你发起一些asynchronous的工作,并给这个方法一个callback,就有工作来完成你的callback与工作的结果。