Javascript Angular2动态/多次设置超时和清除超时
我想删除多个id并延迟撤消(clearTimeout)id。使用这种逻辑,但需要帮助。角度2也许你可以使用一个可观察的:Javascript Angular2动态/多次设置超时和清除超时,javascript,angular,settimeout,cleartimeout,Javascript,Angular,Settimeout,Cleartimeout,我想删除多个id并延迟撤消(clearTimeout)id。使用这种逻辑,但需要帮助。角度2也许你可以使用一个可观察的: public timerId; delete(id){ this.timerId=id; this.timerId = setTimeout(()=>{ //some logic },5000); } undo(id){ this.timerId = id; clearTimeout(this.timerId); } tryddisw
public timerId;
delete(id){
this.timerId=id;
this.timerId = setTimeout(()=>{
//some logic
},5000);
}
undo(id){
this.timerId = id;
clearTimeout(this.timerId);
}
tryddisway。。。。在本规范中也面临同样的问题。。对于单个场景,它工作正常,在setTimeout和clearTimeout中也可以工作,但是多个delete调用延迟,多个undo调用不工作。只有最后一次(最新的)撤销校准有效。谢谢。。成功了。使它保持不变,这是一种独特的仪式??为什么要这样做?this.subscriptions[id+'']=订阅;请你解释一下,如果一个变量从未被重新赋值,那么应该始终使用“const”。。这是最好的做法。我们在订阅对象中设置了一个以id命名的字段,以便稍后通过id访问订阅。仅此而已。所以在设置之后,subscriptions对象看起来像:{1:subscription},我们可以稍后通过id访问订阅。
private subscriptions = {};
public delete(id) {
const subscription = Observable.of(null)
.delay(5000)
.subscribe(() => {
// logic here
});
this.subscriptions[id+''] = subscription;
}
public undo(id) {
const subscription = this.subscriptions[id+'']
if (subscription && !subsciption.isUnsubscribed) {
subscription.unsubscribe();
}
this.subscriptions[id+''] = null;
}