Surya
Surya

Reputation: 35

Angular2 setTimeout and cleartimeout dynamically /multiple

public timerId;

delete(id){
   this.timerId=id;
   this.timerId = setTimeout(()=>{
  //some logic
  },5000);
}

undo(id){
  this.timerId  = id;
  clearTimeout(this.timerId);
}

i want to delete multiple ids and undo(clearTimeout particular) id with delay. using this logic but failing help needed. Angular2

Upvotes: 0

Views: 2661

Answers (1)

David Ibl
David Ibl

Reputation: 911

Maybe you could use an Observable:

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;
}

Upvotes: 1

Related Questions