在 NodeJS 中:是否可以同时执行两个回调



假设我有以下代码:

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);

是否有可能12打印为可互换stdout(例如 12121212121... )?

我已经对此进行了测试,它们没有互换使用,即 1111111...222222222...,但很少有测试远非证据,我担心会发生类似111111211111...2222222...的事情。

换句话说:当我在 Node 中注册一些回调和事件处理程序时,可以同时执行两个回调吗?

(我知道这可以通过启动两个进程来实现,但是我们将有两个stdout,上面的代码将被拆分为单独的文件等。

另一个问题:忘记节点并笼统地说:在单个进程的任何语言中,是否可以同时执行两个函数(即以与上述相同的方式)?

不,每个回调都将在其自己的"执行帧"中执行。在其他语言中,如果操作发生在不同的线程中,"并行执行"和潜在的冲突,因为由此引起的锁是可能的。

只要回调代码是纯同步的,那么就没有两个函数可以并行执行。开始使用一些异步的东西,比如获取网络结果或插入数据库,tadam:你会遇到并行性问题。

相关内容

  • 没有找到相关文章

最新更新