Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type BetterPromiseCallback = (resolve: (res: any) => void, reject:(err: Error | null) => void) => void;
- class BetterPromise<T> {
- state: 'Pending' | 'Resolved' | 'Rejected';
- result: T | null;
- error: Error | null;
- resolve(res: T|null): void {
- this.state = 'Resolved';
- this.result = res;
- return;
- }
- reject(err: Error | null): void {
- this.state = 'Rejected';
- this.error = err;
- return;
- }
- then(callback: (data: T|null, error: Error | null) =>any) {
- return new BetterPromise((resolve,reject) => {
- try {
- const result = callback(this.result, this.error);
- resolve(result);
- } catch(error) {
- reject(error);
- }
- } )
- }
- constructor(callback: BetterPromiseCallback) {
- this.state = 'Pending';
- callback(this.resolve, this.reject);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement