Kri*_*ris 7 javascript asynchronous node.js
我正在学习Node.js,我在每个教程中都听到的是"Node is asynchronous and noblocking!"
我在普通的浏览器JavaScript中听说过只有某些东西,比如AJAX调用可以异步或非阻塞(使用回调)......这也是Node.js的真实情况,或者所有的Node.js回调函数都是异步的/非阻塞?
Ber*_*rgi 14
所有Node.js回调函数都是异步/非阻塞的吗?
不会.只有I/O通常是异步的,但许多其他回调是同步的.请务必查看文档.
异步函数的示例:
同步回调的示例:
forEachsort比较器回调replace匹配回调另请参见所有javascript回调是否异步?如果没有,我怎么知道哪些是?(包括其他一些例子).
不,它们不会自动异步。考虑这段代码:
function foo(array, filter, callback) {
var result = []
for (var i = 0; i < array.length; i++) {
if (filter(array[i])) result.push(array[i]);
}
callback(result);
}
Run Code Online (Sandbox Code Playgroud)
现在想象一个这样的程序:
foo([ 1, 2, 3, 4 ], function() { while(true); }, console.log);
console.log('Blocking?');
Run Code Online (Sandbox Code Playgroud)
如果foo是异步的那么Blocking?会立即出现,但事实并非如此!
但是,您可以非常确定,大多数/所有接受回调的标准库都是非阻塞异步代码。其中大部分也有Sync对应的。
| 归档时间: |
|
| 查看次数: |
3013 次 |
| 最近记录: |