我正在尝试在nodejs中找到Promise的源代码。但是文件太多了。我找不到哪个文件包含承诺的实现。有人可以给我看吗?谢谢。
https://github.com/nodejs/node
nodejs 中的 promise 来自 V8 本身(Javascript 引擎(,而不仅仅是 node.js。 因为它来自 V8,所以它在 node.js、Chrome、Opera、Edge 等中是相同的实现......他们都使用 V8 发动机。
在代码中,实现的各个部分到处都是。 这里有一堆文件:
https://github.com/nodejs/node/blob/80f2b6736724e0a3b90731deb9503013edc7d85e/deps/v8/src/builtins/builtins-promise-gen.h
https://github.com/nodejs/node/blob/f53a2414474c2b1aee07ab367415b32c20e50bd9/deps/v8/src/runtime/runtime-promise.cc
https://github.com/nodejs/node/blob/80f2b6736724e0a3b90731deb9503013edc7d85e/deps/v8/src/builtins/builtins-promise-gen.cc
https://github.com/nodejs/node/blob/7cf6f9e964aa00772965391c23acda6d71972a9a/lib/internal/process/promises.js
https://github.com/nodejs/node/blob/f53a2414474c2b1aee07ab367415b32c20e50bd9/deps/v8/src/builtins/builtins-promise.h
https://github.com/nodejs/node/blob/80f2b6736724e0a3b90731deb9503013edc7d85e/deps/v8/src/objects/js-promise.h
正如我发现node.js代码中经常出现的情况一样,在一个地方查看整个promise实现并不简单,特别是对于使用本机代码的函数。
实现似乎主要是本机代码,这可能是因为它是 V8 内部的,而不是特定于 nodejs。 因此,Chrome,Edge,nodejs和任何其他使用V8的程序将具有相同的承诺实现。 这是有道理的,因为它现在是Javascript语言的标准部分。
你可以使用 nodejs internal/util module util.promisify 找到 promise 的实现。 请检查下面的来源
https://github.com/nodejs/node/blob/master/lib/internal/util.js