在NodeJS中:两个callback是否可以同时执行?
比方说,我有这个代码:
function fn(n) { return function() { for(var k = 0; k <= 1000; ++k) { fs.writeSync(process.stdout.fd, n+"\n"); } } } setTimeout(fn(1), 100); setTimeout(fn(2), 100);
是否有可能将1
和2
打印到stdout
(例如12121212121...
)?
我已经testing过这一点,他们没有可交换,即1111111...222222222...
,但很less有testing是远远不能certificate,我担心像111111211111...2222222...
可能发生。
换句话说:当我在Node中注册一些callback函数和事件处理函数时,两个callback函数可以同时执行吗?
(我知道这可能是启动两个进程,但是然后我们会有两个stdout
,上面的代码将被分割成单独的文件等)
另一个问题是:遗忘节点和一般说话:在单一过程中的任何语言,是否有可能在同一时间执行两个function(即以与上述相同的方式)?
不,每个callback都将在其自己的“执行框架”中执行。 在其他语言中,如果操作发生在不同的线程中,“并行执行”和由此引起的潜在的冲突是可能的。
只要callback代码是纯同步的,就不会有两个函数可以并行执行。 开始使用一些asynchornish的东西,如获取networking结果或插入数据库,tadam:你会有并行性问题。