Javascript 承诺链在记忆中是如何工作的?

Javascript 承诺链在记忆中是如何工作的?,javascript,memory,promise,v8,execution,Javascript,Memory,Promise,V8,Execution,函数foo(){ console.log('foo called') 回报承诺。解决(5) } foo() 。然后(res=>{ console.log(res) }) log('hi')我们可以看到,它绑定到当前执行上下文,即使您没有将其存储在变量中 Node* const native_context = LoadNativeContext(context); Node* const promise = AllocateAndInitJSPromise(context); 综上所述,我们可

函数foo(){
console.log('foo called')
回报承诺。解决(5)
}
foo()
。然后(res=>{
console.log(res)
})
log('hi')
我们可以看到,它绑定到当前执行上下文,即使您没有将其存储在变量中

Node* const native_context = LoadNativeContext(context);
Node* const promise = AllocateAndInitJSPromise(context);
综上所述,我们可以看到承诺解析链被实现为一个简单的链表(emphasis mine):

PromiseReaction
对象形成一个单链表[…]。在
JSPromise
实例上,它们以相反的顺序链接,并在微任务队列上调度它们时再次转换为正确的顺序

简言之,V8将承诺绑定到执行上下文,即使您没有将它们存储在变量中,承诺链也是作为链表实现的,这意味着一旦承诺实际解析,就很容易进行跟踪



为了更好地了解异步操作如何相互作用,请查看Javascript事件循环。

我将查看Javascript事件循环的工作原理。