我知道有一个消息队列和JavaScript是单线程的,还有一个事件循环,从队列中取出消息并执行一些工作。
当你创建一个Promise,并将其保存在消息队列中时,事件循环何时或如何知道它已被解决(或拒绝)。它会一直询问状态是否不是“挂起”吗?还是当Promise解决或拒绝时,它本身就排队到了消息队列中?
更新:
经过一些研究,我认为我弄错了。实际上,阻塞和运行的是XHR请求本身在其自己的线程中,以免阻塞主执行线程。因此,只有主执行线程是单线程的,当XHR请求获得结果(或失败)时,XHR线程将回调函数排队到主线程。
那么,根据this article的说法,Promise本身是否被保留在堆栈中,当其解决时将回调函数推送到队列中?
resolve()
或reject()
回调。 - Pointy