Javascript 未分配的承诺及其关联的处理程序存储在哪里

Javascript 未分配的承诺及其关联的处理程序存储在哪里,javascript,promise,es6-promise,Javascript,Promise,Es6 Promise,对Promise构造函数的调用返回一个Promise对象,我们称之为originalpromise。originalpromise的状态为:挂起,值为:未定义 在第1行中,我们立即调用originalpromise对象上的then方法,该方法返回一个全新的promise对象——我们称之为nextpromise。nextpromise的状态为“挂起”,值为“未定义” 当1000ms后调用RunOnItemCompletion时,resolve runs-将originalpromise状态更新为r

对Promise构造函数的调用返回一个Promise对象,我们称之为originalpromise。originalpromise的状态为:挂起,值为:未定义

在第1行中,我们立即调用originalpromise对象上的then方法,该方法返回一个全新的promise对象——我们称之为nextpromise。nextpromise的状态为“挂起”,值为“未定义”

当1000ms后调用RunOnItemCompletion时,resolve runs-将originalpromise状态更新为resolved,将originalpromise值更新为Timer complete

在这一点上,onpermission被执行-onpermission-并返回Timer complete。我们的nextpromise现在的状态为:已解决,值为:计时器完成

三个问题:

原始PROMISE解析时调用的OnPerformance函数存储在哪里? originalpromise和nextpromise存储在哪里?因为它们没有分配给任何对象。 与之相关的2-OnPerformance如何知道执行原始Promise解决方案。它是由originalpromise引用的还是originalpromise的解决方案指示下一步的解决方案 而这正是执行任务的初衷
的确,您没有新Promise的直接引用变量,但是您不需要声明变量来对其进行操作。例如,它就像

document.querySelector'div'.addEventListener

对所选div的引用不会保存在变量中,但仍可以在同一行上对对象进行操作

但是,nextpromise引用确实丢失了:您基本上是声明它的 新的承诺执行人。不履行;

不要把它分配给任何东西,这样以后就没有办法得到它了。承诺对象仍然存在,只是无法引用

原始PROMISE解析时调用的OnPerformance函数存储在哪里

它存储在promise的实例数据中,promise的.then处理程序被调用。当承诺得到解决时,它将按照注册顺序调用每个.then处理程序

originalpromise和nextpromise存储在哪里?因为它们没有分配给任何对象

在您的代码中,原始承诺并没有存储在特定的任何地方。它不会立即被垃圾收集,因为由于setTimeout,executor作用域仍然处于活动状态,并且仍然可以由活动代码调用的resolve实现引用了原始承诺

与之相关的2-OnPerformance如何知道执行原始Promise解决方案。它是由originalpromise引用的,还是originalpromise的决议指示nextpromise其已解决,而这正是开始执行OnCompletion的原因


传递给executor函数的resolve引用了它所涉及的承诺。

谢谢您的回答。originalpromise的实例数据是什么?例如,我认为不可能在chrome开发工具中查看它?附加问题:resolve函数如何表示对originalpromise的引用[是否有规范/文档我可以看到resolve的工作方式-当我console.log它是本机代码时-我可以查看吗?]@javascriptttt-Promise实例数据是私有的。您不能直接查看它。@javascriptttt-有几种不同的解决方法。它甚至可以通过闭包或绑定在纯Javascript中实现。如果您真的想查看Javascript实现,请参阅。您还可以查看,看看他们是如何在本机代码中实现的。感谢这些-非常有用。我仍然不清楚oncompletion与originalpromise和nextpromise之间的联系机制。它附加到某个地方的originalpromise实例,但这是私有的,在调用resolve后立即调用。然后将onCompletion的返回值指定给nextpromise值。您是否了解OnPerformance的定义与originalpromise的关联,以及其返回值与nextpromise的关联?谢谢:
new Promise(executor).then(onFulfilment);

function executor (resolve, reject) {
  function runOnTimerCompletion(){
    resolve("Timer complete")
  }
  setTimeout(runOnTimerCompletion, 1000);
}

function onFulfilment(input){
  console.log(input)
  return input
}