Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

Promise 技术细节(2)

  从应用层上看 Promise 对象有三个状态,分别是:pending、resolved、rejected。在内部实现过程中,应该还有一个 resolving 状态才对。当一个 resolver 中的 resolve 被执行时,它可能不会立即产生结果,也没有进入 resolved 状态,但是此后的就再也无法调用 resolve 了。
var delay500 = new Promise(resolve => setTimeout(resolve, 500)); new Promise(resolve => { resolve(delay500); console.log('此时处于 resolving 状态'); }).then(() => { console.log(1); });   但这只是 resolve 方向才会有的状态,因为 resolve 方向会将 result 中的 Promise 一层层剖出来。在 reject 方向只是纯粹的抛一个 reason,并不会解析 Promise,所以不存在这种情况 var delay500 = new Promise(resolve => setTimeout(resolve, 500)); new Promise((resolve, reject) => { reject(delay500); console.log('此时已经 rejected,因为 reason 已经产生'); }).catch(() => { console.log(1); });   从应用层上看,这个 resolving 状态通常是被并入 pending 的。
  如果自己想实现一个 Promise 就会发现这个状态需要考虑
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^