语法的哪一部分提供了此函数应该在其他线程中运行并且是非阻塞的信息?
让我们考虑node.js中的简单异步I/O.
var fs = require('fs');
var path = process.argv[2];
fs.readFile(path, 'utf8', function(err,data) {
var lines = data.split('\n');
console.log(lines.length-1);
});
Run Code Online (Sandbox Code Playgroud)
究竟是什么让它在背景中发生?任何人都可以准确地解释它或粘贴一些好资源的链接?我看到的每个地方都有关于回调是什么的大量信息,但没有人解释为什么它实际上是这样的.
这不是关于node.js的具体问题,而是关于每种编程语言中回调的一般概念.
编辑:
可能我提供的例子并不是最好的.所以我们不要考虑这个node.js代码片段.我一般都在问 - 当遇到回调函数时,程序是如何继续执行的.什么是语法使回调概念成为非阻塞概念?
提前致谢!
我试图找出一个有效的算法来改变一堆节点上的很多类,我发现我对javascript如何遍历DOM有一个很大的漏洞.
浏览器/ javascript是否使用像闪存一样的弹性赛道?或者它是更多的事件驱动,每次有变化时重绘整个显示?
"弹性跑道"是一个闪光范例,你可以想象一个闪光环绕的大环.在用户处理期间,时间变化积累,并且在闪存处理期间,闪存引擎会四处奔跑并一遍又一遍地应用所有更改.
替代方案是一个事件模型,每次属性更改时,整个屏幕都会重新绘制 - 这可能是浏览器所做的,但我不确定.
我可以想到混合算法,如果没有任何变化,没有任何事情发生 - 但如果有它们被允许建立 - 有点像我的水槽上的菜.
有没有人能够快速描述用于处理属性更改和DOM插入的算法.