Skip to content

Commit 5c434fb

Browse files
committed
Improve production implementation
1 parent 2e24773 commit 5c434fb

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

JavaScript/future.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
'use strict';
22

33
class Future {
4+
#executor;
5+
46
constructor(executor) {
5-
this.executor = executor;
7+
this.#executor = executor;
68
}
79

810
static of(value) {
@@ -35,16 +37,20 @@ class Future {
3537
}
3638

3739
fork(successed, failed) {
38-
this.executor(successed, failed);
40+
this.#executor(successed, failed);
3941
}
4042

41-
promise() {
42-
return new Promise((resolve, reject) => {
43-
this.fork(
44-
(value) => resolve(value),
45-
(error) => reject(error),
46-
);
47-
});
43+
toPromise() {
44+
const { promise, resolve, reject } = Promise.withResolvers();
45+
this.fork(resolve, reject);
46+
return promise;
47+
}
48+
49+
toThenable() {
50+
const then = (resolve, reject) => {
51+
this.fork(resolve, reject);
52+
};
53+
return { then };
4854
}
4955
}
5056

0 commit comments

Comments
 (0)