1.Promise 中不调用 resolve 与 reject 产生的结果
问题:若没有调用 resolve
或者 reject
,应该是执行中
的状态,实际的情况是Promise结束了。
调研得到结论:
- 从语法的层面,Promise 应该一直 pending 直到 resolve或者 reject(这种 Promise 有专门的描述 “forever pending promise”,说明 TC39 考虑过这个问题,但最终把此类 Promise 的处理问题留给引擎开发者来解决);
- 从引擎的层面,可以通过诸多方面来判断在执行的程序是否需要继续执行,如果无需执行,就可以结束,不会考虑 Promise 的状态,就算程序不结束,没被引用的 Promise 所占内存都可能被回收,那它的状态就更不重要了。