asynkron - TypeScript-ekvivalent till Dart `Completer`


I Dart har jag en Completer som returnerar en Future (Promise) och den Future kan slutföras någon annanstans än där den skapades, som

class SomeClass {
  final Completer<bool> initializationDone = new Completer<bool>();

  SomeClass() {
    _doSomeAsyncInitialization();
  }

  void _doSomeAsyncInitialization() {
    // some async initialization like a HTTP request
    fetchDataFromServer().then((data) {
      processData();
      initializationDone.complete(true);
    });
  }
}

main() {
  var some = new SomeClass();
  some.initializationDone.future.then((success) {
    // do something.
  });
}

Jag vill inte ha en lösning på detta faktiska problem, detta är bara ett exempel jag kom på för att visa hur en Completer används i Dart. Vad skulle vara motsvarande till Dart Completer i TypeScript?

Svar #1

gjorde den här enkla klassen som fungerade för mig:

export class Completer<T> {
    public readonly promise: Promise<T>;
    public complete: (value: (PromiseLike<T> | T)) => void;
    private reject: (reason?: any) => void;

    public constructor() {
        this.promise = new Promise<T>((resolve, reject) => {
            this.complete = resolve;
            this.reject = reject;
        })
    }
}

const prom = new Completer<bool>();

prom.complete(true);

Relaterade artiklar