Skip to content

Commit 8890ecf

Browse files
use p-cancelable
1 parent ec78f7d commit 8890ecf

3 files changed

Lines changed: 15 additions & 25 deletions

File tree

packages/jest-jasmine2/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"jest-matcher-utils": "^20.0.3",
1515
"jest-matchers": "^20.0.3",
1616
"jest-message-util": "^20.0.3",
17-
"jest-snapshot": "^20.0.3"
17+
"jest-snapshot": "^20.0.3",
18+
"p-cancelable": "^0.3.0"
1819
},
1920
"devDependencies": {
2021
"jest-runtime": "^20.0.4"

packages/jest-jasmine2/src/queue_runner.js

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
* @flow
99
*/
1010

11+
import PCancelable from 'p-cancelable';
1112
import pTimeout from './p_timeout';
1213

1314
type Options = {
@@ -24,20 +25,10 @@ type QueueableFn = {
2425
timeout?: () => number,
2526
};
2627

27-
function createCancelToken() {
28-
let cancel;
29-
const promise = new Promise(resolve => {
30-
cancel = resolve;
31-
});
32-
33-
return {
34-
cancel,
35-
promise,
36-
};
37-
}
38-
3928
function queueRunner(options: Options) {
40-
const token = createCancelToken();
29+
const token = new PCancelable((onCancel, resolve) => {
30+
onCancel(resolve);
31+
});
4132

4233
const mapper = ({fn, timeout}) => {
4334
let promise = new Promise(resolve => {
@@ -60,7 +51,7 @@ function queueRunner(options: Options) {
6051
}
6152
});
6253

63-
promise = Promise.race([promise, token.promise]);
54+
promise = Promise.race([promise, token]);
6455

6556
if (!timeout) {
6657
return promise;
@@ -80,15 +71,15 @@ function queueRunner(options: Options) {
8071
);
8172
};
8273

83-
const returnPromise = options.queueableFns.reduce(
74+
const res = options.queueableFns.reduce(
8475
(promise, fn) => promise.then(() => mapper(fn)),
8576
Promise.resolve(),
8677
);
8778

8879
return {
89-
cancel: token.cancel,
90-
catch: returnPromise.catch.bind(returnPromise),
91-
then: returnPromise.then.bind(returnPromise),
80+
cancel: token.cancel.bind(token),
81+
catch: res.catch.bind(res),
82+
then: res.then.bind(res),
9283
};
9384
}
9485

yarn.lock

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4599,6 +4599,10 @@ osenv@^0.1.4:
45994599
os-homedir "^1.0.0"
46004600
os-tmpdir "^1.0.0"
46014601

4602+
p-cancelable@^0.3.0:
4603+
version "0.3.0"
4604+
resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa"
4605+
46024606
p-finally@^1.0.0:
46034607
version "1.0.0"
46044608
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
@@ -5208,12 +5212,6 @@ resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7:
52085212
dependencies:
52095213
path-parse "^1.0.5"
52105214

5211-
resolve@^1.3.2:
5212-
version "1.3.3"
5213-
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
5214-
dependencies:
5215-
path-parse "^1.0.5"
5216-
52175215
resolve@^1.4.0:
52185216
version "1.4.0"
52195217
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86"

0 commit comments

Comments
 (0)