回调是web API绑定与Javascript引擎链接的唯一方式吗?

回调是web API绑定与Javascript引擎链接的唯一方式吗?,javascript,google-chrome,v8,Javascript,Google Chrome,V8,在浏览器的上下文中,可以安全地说web API绑定(例如:setTimeout())和Javascript引擎之间唯一可能的链接是通过回调函数 ie:回调函数->回调队列->事件循环->Javascript引擎 或者一些本机代码是否可以使用其他机制与Javascript引擎通信 回调是web API绑定与JavaScript引擎链接的唯一方式吗 不是。document.createElement是众多反例之一 回调是异步web API绑定链接回Javascript引擎的唯一方式吗 对。回调是任何

在浏览器的上下文中,可以安全地说web API绑定(例如:
setTimeout()
)和Javascript引擎之间唯一可能的链接是通过回调函数

ie:回调函数->回调队列->事件循环->Javascript引擎

或者一些本机代码是否可以使用其他机制与Javascript引擎通信

回调是web API绑定与JavaScript引擎链接的唯一方式吗

不是。
document.createElement
是众多反例之一

回调是异步web API绑定链接回Javascript引擎的唯一方式吗


对。回调是任何异步API工作的唯一方式,这几乎就是“异步API”的定义。(不仅仅是在JavaScript或web上。)

答案取决于您如何定义“web API”。例如,绝大多数DOM API都是简单的同步函数调用。同步函数调用返回一个值,承诺返回一个延迟值……如果您能描述一种编程情况,在这种情况下,这将提供重要的指导,这将有助于人们提供答案。我明白了。我没有意识到domapi调用可以是同步的。所以大部分domapi(或者引擎之外的任何同步代码)仍然会在Javascript引擎的主线程上运行?我想我的问题是“回调是异步web API绑定链接回Javascript引擎的唯一方式吗?”但是承诺呢?我希望有用于构造和异步解析承诺的本机接口,因此API绑定可能只返回一个承诺,而不显式地安排任何回调本身。承诺只是回调的语法糖(和组织帮助)。归根结底,谁调度回调并不重要,无论是嵌入程序编写的函数还是引擎提供的助手(由嵌入程序直接或间接调用)。