What happens to an ES6-Promise when you no longer hold a reference to it?(当你不再引用ES6-Promise时,它会发生什么?)
本文介绍了当你不再引用ES6-Promise时,它会发生什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
背景
您可以从以下代码中看到:
var foo1 = new Promise (function (resolve, reject){};
var foo2 = new Promise (function (resolve, reject) {
resolve('succes!');
});
var foo3 = new Promise (function (resolve, reject) {
reject(Error('Failure!'));
});
console.log (typeof foo1 === 'object'); // true
console.log (Object.getOwnPropertyNames(foo1)); // []
console.log (foo1.length); // undefined
console.log (foo1); // Promise { <pending> }
console.log (foo2); // Promise { 'succes!' }
console.log (foo3); // Promise { <rejected> [Error: Failure!] }
引用Promise
的变量引用的是一个特殊的Promise
对象,该对象包含传递给Promise
构造函数的状态或结果。如果您随后设置:
foo1 = null;
foo2 = null;
foo3 = null;
您无法再访问此状态或结果。
问题
在上述情况下,Promise
会被垃圾回收吗?如果不会,是否不会产生导致内存泄漏的风险?
推荐答案
在上述情况下,
Promise
会被垃圾回收吗?
是的。在这方面,Promise对象就像其他所有对象一样。
某些实现(Firefox)确实有特殊的行为,其中未处理的拒绝检测依赖于垃圾回收,但这并不会真正改变正在收集的Promise对象的任何内容。
这篇关于当你不再引用ES6-Promise时,它会发生什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:当你不再引用ES6-Promise时,它会发生什么?


基础教程推荐
猜你喜欢
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 动态更新多个选择框 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01