与JavaScript异步函数混淆

与JavaScript异步函数混淆,javascript,Javascript,每个教程都重复JavaScript是同步的,这意味着所有内容都在一个线程上运行,一个命令接一个命令 现在,我对异步函数和承诺非常困惑,如果JavaScript是同步的,它们如何实现异步性?JavaScript如何运行命令和检测鼠标单击之类的事件 比方说,我们有某种API或对数据库的调用,JavaScript如何知道数据何时可以使用?“在单线程中运行”和“同步”是两个正交的概念concepts@Pointy你能解释一下吗?术语同步和单线程,或者经常使用错误的方式。JavaScript运行单线程,因

每个教程都重复JavaScript是同步的,这意味着所有内容都在一个线程上运行,一个命令接一个命令

现在,我对异步函数和承诺非常困惑,如果JavaScript是同步的,它们如何实现异步性?JavaScript如何运行命令和检测鼠标单击之类的事件


比方说,我们有某种API或对数据库的调用,JavaScript如何知道数据何时可以使用?

“在单线程中运行”和“同步”是两个正交的概念concepts@Pointy你能解释一下吗?术语同步和单线程,或者经常使用错误的方式。JavaScript运行单线程,因此相同执行上下文(可以访问相同的对象/变量)的代码不会并行运行。引擎本身可以是多线程的,并且可以在后台执行多个任务。Synchronous and asynchronous(同步和异步)描述了在函数返回后是否立即得到函数调用的结果(或效果),或者是否在以后得到了实际结果(即得到了稍后解析的承诺,或者在稍后的指针调用了回调函数)。JS中的相关概念是“事件循环”。如果你用谷歌搜索它,你会在网上找到许多解释。@Wahalez
[…]事件循环是否在另一个线程中运行?[…]
否事件循环属于JavaScript上下文,并且不在单独的线程中运行。但是其他线程可以将事件推送到事件循环的队列中。“在单个线程中运行”和“同步”是两个正交的线程concepts@Pointy你能解释一下吗?术语同步和单线程,或者经常使用错误的方式。JavaScript运行单线程,因此相同执行上下文(可以访问相同的对象/变量)的代码不会并行运行。引擎本身可以是多线程的,并且可以在后台执行多个任务。Synchronous and asynchronous(同步和异步)描述了在函数返回后是否立即得到函数调用的结果(或效果),或者是否在以后得到了实际结果(即得到了稍后解析的承诺,或者在稍后的指针调用了回调函数)。JS中的相关概念是“事件循环”。如果你用谷歌搜索它,你会在网上找到许多解释。@Wahalez
[…]事件循环是否在另一个线程中运行?[…]
否事件循环属于JavaScript上下文,并且不在单独的线程中运行。但是其他线程可以将事件推送到事件循环的队列中。