【发布时间】:2015-02-23 17:20:02
【问题描述】:
更新:事实证明这是一个非常愚蠢的问题。在引用的示例中,我只是没有注意到一些简单的事情。
我一直在查看有关滴答声和事件循环的信息,大部分情况都很清楚,但the nextTick documentation 中有一个示例让我感到困惑。它说:
对于 API 而言,100% 同步或 100% 非常重要 异步。考虑这个例子:
// WARNING! DO NOT USE! BAD UNSAFE HAZARD! function maybeSync(arg, cb) { if (arg) { cb(); return; } fs.stat('file', cb); }此 API 很危险。如果你这样做:
maybeSync(true, function() { foo(); }); bar();那么不清楚是先调用 foo() 还是 bar()。
第一个问题:为什么 foo 不能保证首先被调用?有一个简单的函数调用(可能是同步)、一个 if 和一个 cb=foo 的回调。我认为这个链中的某些东西在某种程度上(可能)是异步的,将某些东西推送到事件队列并继续执行?我看不出有什么东西会产生这种效果。
第二个问题:是否有一些文档可以帮助我自己理解这一点?
【问题讨论】:
标签: javascript node.js events