return new Promise(function(resolve, reject {
const to = setTimeout(function(){
});
});
想象一下,我想确保从执行器函数内部清理资源。
我想做这样的事情:
return new Promise(function(resolve, reject {
const to = setTimeout(function(){
});
this.finally(function(){
clearTimeout(to);
});
});
但是 this
在 Promise 执行器函数中不可用。
有没有办法清理 promise 执行器中的异步资源?
我想你可以在调用解析/拒绝之前清理它们,但在某些情况下这会更困难。
最佳答案
不确定您是否需要在触发后清除超时,但您可以尝试以下操作:
var someTest = () => {
var t;
var p = new Promise(
(resole)=>{
t = setTimeout(resole,2000)
}
);
p.finally(
()=>console.log(t,clearTimeout(t))
)
return p;
}
someTest();
或者您可以尝试以下操作:
var someTest = () =>
new Promise(
(resole)=>{
t = setTimeout(resole,2000)
}
).then(
result=>{
//clean up
return result
},
error=>{
//clean up
return Promise.reject(error)
}
);
关于javascript - 监听 Promise 何时在执行器函数内解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50067357/