人们有时会将下面的回调模式称为异步。我对节点中'非阻塞'的理解是否正确?
function beAsync(msg, cb){
cb(msg);
}
beAsync("a", function(msg){
console.log(msg);
});
console.log("b");
人们有时说的是,beAsync
允许代码的其余部分再运行回调发生时,它的准备。
当我打电话beAsync
和真正喜欢fs.readFile
首先必须是运行同步和然后有事允许代码readFile
其余部分被允许允许运行后代码中的一些代码的异步功能。
我在说一些代表回调的东西进入一个比JavaScript更低级别的循环时正确吗?
因此,beAsync的修订将包含setTimeout。
function beAsync(msg, cb){
setTimeout(function(){ cb(msg) }, 1);
}
所以setTimeout和readFile的内部可以说是一个JavaScript所在的图层? 对此底层说话是实现JavaScript中的非阻塞代码的唯一方法?
好吧,我想我已经明白了。在你分享的链接中,这个答案帮助我澄清了一些对我来说http://www.quora.com/How-does-IO-concurrency-work-in-node-js-despite-the-whole-app-running -in-a-single-thread #__ w2_AYBuMR9_answer_user(by Andrew Jessup) – Aaron 2012-01-12 17:13:14