iterative/vscode-dvc

View on GitHub
extension/src/class/deferred.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import { Deferred } from '@hediet/std/synchronization'
import { Disposable } from './dispose'

export abstract class DeferredDisposable extends Disposable {
  protected deferred = new Deferred()
  private initialized = this.deferred.promise

  public isReady() {
    return this.initialized
  }

  public resetDeferred() {
    if (this.consumersStillWaiting()) {
      return
    }
    this.deferred = new Deferred()
    this.initialized = this.deferred.promise
  }

  private consumersStillWaiting() {
    return this.deferred.state === 'none'
  }
}