人们有时会将下面的回调模式称为异步。
function beAsync(msg, cb){
cb(msg);
}
beAsync("a", function(msg){
console.log(msg);
});
console.log("b");
人们有时会说beAsync
允许其余的代码运行,然后回调就会在它准备就绪时发生。
当我调用beAsync
和真正的异步函数(如fs.readFile
)时,必须有一些同步运行的代码和然后发生的事情允许{{1}之后的代码允许其余代码运行。
我是否正确地说某个代表回调的内容会进入比JavaScript更低级别的循环?
因此beAsync的修订版将包含setTimeout。
readFile
所以setTimeout和readFile的内部可以说出JavaScript所在的层吗? 说到这个较低层是在JavaScript中实现非阻塞代码的唯一方法吗?
答案 0 :(得分:0)
说到这个较低层是实现非阻塞的唯一方法 JavaScript中的代码?
这是正确的。节点只是等式的一部分。框架本身大量使用线程来管理可以阻塞的东西,比如IO。看看
当我调用beAsync和真正的异步函数时,如fs.readFile 最初必须有一些同步运行的代码然后 发生了一些事情,允许代码在readFile之后的代码 被允许被允许运行。
这不是很详细,但从高层来看是正确的。每当你启动一些异步工作,并给该方法一个回调时,就会有工作来执行你的回调和工作的结果。