我在node.js中运行JavaScript时遇到了疑问。
var z = new Image();
function x()
{
var promise = new Promise();
return promise;
}
var promise = x();
promise.then(function(){});
..........
promise.reject(z);
x()返回的promise中没有添加拒绝处理程序。但是,在某些时候,如果我们发送具有响应值z的拒绝,则z是否将被垃圾收集,或者由于未处理的拒绝引用它而仍将保持。但是,当我向承诺添加catch / reject处理程序时,我看到z发生了垃圾收集。
请说明为什么Z没有发生垃圾收集,当传递给未处理的拒绝时。
答案 0 :(得分:-1)
这不是你如何使用[原生A +]承诺。
试试这样:
function x()
{
return new Promise((resolve,reject) => {
if(success()) {
resolve(success_val);
} else {
reject(new Error("fail!"));
}
});
}
let promise = x();
promise.then(function(){});
您无法拒绝其创建之外的承诺。您必须使用(resolve,reject)构造函数回调。