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