Skip to content
This repository was archived by the owner on Aug 21, 2022. It is now read-only.

Commit 867a9cf

Browse files
committed
update promise polyfill
1 parent 27157b3 commit 867a9cf

14 files changed

+42
-36
lines changed

changelog.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
##v0.4.6
44

5-
- fix: the settled promise bug
6-
- fix: a bug with settled promise value changes
5+
- many `Promise` [fixes](https://github.com/Octane/Promise/releases)
76
- new: history API polyfill
87

98
##v0.4.5

dev/jscore-ie10.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -582,15 +582,16 @@ window.Promise || (window.Promise = new function () {
582582
}
583583

584584
function isThenable(anything) {
585-
return 'then' in Object(anything);
585+
return Object(anything) === anything &&
586+
'function' == typeof anything.then;
586587
}
587588

588589
function isSettled(promise) {
589590
return promise._fulfilled || promise._rejected;
590591
}
591592

592593
function allSettled(promises) {
593-
return Array.every(promises, isSettled);
594+
return promises.every(isSettled);
594595
}
595596

596597
function defaultOnFulfilled(value) {
@@ -636,7 +637,7 @@ window.Promise || (window.Promise = new function () {
636637

637638
race: function (promises) {
638639
return new Promise(function (resolve, reject) {
639-
Array.forEach(promises, function (promise) {
640+
promises.forEach(function (promise) {
640641
toPromise(promise).then(resolve, reject);
641642
});
642643
});
@@ -645,7 +646,7 @@ window.Promise || (window.Promise = new function () {
645646
all: function (promises) {
646647
return new Promise(function (resolve, reject) {
647648
var values = [];
648-
promises = Array.map(promises, toPromise);
649+
promises = promises.map(toPromise);
649650
promises.forEach(function (promise, index) {
650651
promise.then(
651652
function (value) {

dev/jscore-ie9.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -582,15 +582,16 @@ window.Promise || (window.Promise = new function () {
582582
}
583583

584584
function isThenable(anything) {
585-
return 'then' in Object(anything);
585+
return Object(anything) === anything &&
586+
'function' == typeof anything.then;
586587
}
587588

588589
function isSettled(promise) {
589590
return promise._fulfilled || promise._rejected;
590591
}
591592

592593
function allSettled(promises) {
593-
return Array.every(promises, isSettled);
594+
return promises.every(isSettled);
594595
}
595596

596597
function defaultOnFulfilled(value) {
@@ -636,7 +637,7 @@ window.Promise || (window.Promise = new function () {
636637

637638
race: function (promises) {
638639
return new Promise(function (resolve, reject) {
639-
Array.forEach(promises, function (promise) {
640+
promises.forEach(function (promise) {
640641
toPromise(promise).then(resolve, reject);
641642
});
642643
});
@@ -645,7 +646,7 @@ window.Promise || (window.Promise = new function () {
645646
all: function (promises) {
646647
return new Promise(function (resolve, reject) {
647648
var values = [];
648-
promises = Array.map(promises, toPromise);
649+
promises = promises.map(toPromise);
649650
promises.forEach(function (promise, index) {
650651
promise.then(
651652
function (value) {

dev/jscore-polyfill-ie10.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -582,15 +582,16 @@ window.Promise || (window.Promise = new function () {
582582
}
583583

584584
function isThenable(anything) {
585-
return 'then' in Object(anything);
585+
return Object(anything) === anything &&
586+
'function' == typeof anything.then;
586587
}
587588

588589
function isSettled(promise) {
589590
return promise._fulfilled || promise._rejected;
590591
}
591592

592593
function allSettled(promises) {
593-
return Array.every(promises, isSettled);
594+
return promises.every(isSettled);
594595
}
595596

596597
function defaultOnFulfilled(value) {
@@ -636,7 +637,7 @@ window.Promise || (window.Promise = new function () {
636637

637638
race: function (promises) {
638639
return new Promise(function (resolve, reject) {
639-
Array.forEach(promises, function (promise) {
640+
promises.forEach(function (promise) {
640641
toPromise(promise).then(resolve, reject);
641642
});
642643
});
@@ -645,7 +646,7 @@ window.Promise || (window.Promise = new function () {
645646
all: function (promises) {
646647
return new Promise(function (resolve, reject) {
647648
var values = [];
648-
promises = Array.map(promises, toPromise);
649+
promises = promises.map(toPromise);
649650
promises.forEach(function (promise, index) {
650651
promise.then(
651652
function (value) {

dev/jscore-polyfill-ie9.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -582,15 +582,16 @@ window.Promise || (window.Promise = new function () {
582582
}
583583

584584
function isThenable(anything) {
585-
return 'then' in Object(anything);
585+
return Object(anything) === anything &&
586+
'function' == typeof anything.then;
586587
}
587588

588589
function isSettled(promise) {
589590
return promise._fulfilled || promise._rejected;
590591
}
591592

592593
function allSettled(promises) {
593-
return Array.every(promises, isSettled);
594+
return promises.every(isSettled);
594595
}
595596

596597
function defaultOnFulfilled(value) {
@@ -636,7 +637,7 @@ window.Promise || (window.Promise = new function () {
636637

637638
race: function (promises) {
638639
return new Promise(function (resolve, reject) {
639-
Array.forEach(promises, function (promise) {
640+
promises.forEach(function (promise) {
640641
toPromise(promise).then(resolve, reject);
641642
});
642643
});
@@ -645,7 +646,7 @@ window.Promise || (window.Promise = new function () {
645646
all: function (promises) {
646647
return new Promise(function (resolve, reject) {
647648
var values = [];
648-
promises = Array.map(promises, toPromise);
649+
promises = promises.map(toPromise);
649650
promises.forEach(function (promise, index) {
650651
promise.then(
651652
function (value) {

dev/jscore-polyfill.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,15 +1002,16 @@ window.Promise || (window.Promise = new function () {
10021002
}
10031003

10041004
function isThenable(anything) {
1005-
return 'then' in Object(anything);
1005+
return Object(anything) === anything &&
1006+
'function' == typeof anything.then;
10061007
}
10071008

10081009
function isSettled(promise) {
10091010
return promise._fulfilled || promise._rejected;
10101011
}
10111012

10121013
function allSettled(promises) {
1013-
return Array.every(promises, isSettled);
1014+
return promises.every(isSettled);
10141015
}
10151016

10161017
function defaultOnFulfilled(value) {
@@ -1056,7 +1057,7 @@ window.Promise || (window.Promise = new function () {
10561057

10571058
race: function (promises) {
10581059
return new Promise(function (resolve, reject) {
1059-
Array.forEach(promises, function (promise) {
1060+
promises.forEach(function (promise) {
10601061
toPromise(promise).then(resolve, reject);
10611062
});
10621063
});
@@ -1065,7 +1066,7 @@ window.Promise || (window.Promise = new function () {
10651066
all: function (promises) {
10661067
return new Promise(function (resolve, reject) {
10671068
var values = [];
1068-
promises = Array.map(promises, toPromise);
1069+
promises = promises.map(toPromise);
10691070
promises.forEach(function (promise, index) {
10701071
promise.then(
10711072
function (value) {

dev/jscore.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,15 +1002,16 @@ window.Promise || (window.Promise = new function () {
10021002
}
10031003

10041004
function isThenable(anything) {
1005-
return 'then' in Object(anything);
1005+
return Object(anything) === anything &&
1006+
'function' == typeof anything.then;
10061007
}
10071008

10081009
function isSettled(promise) {
10091010
return promise._fulfilled || promise._rejected;
10101011
}
10111012

10121013
function allSettled(promises) {
1013-
return Array.every(promises, isSettled);
1014+
return promises.every(isSettled);
10141015
}
10151016

10161017
function defaultOnFulfilled(value) {
@@ -1056,7 +1057,7 @@ window.Promise || (window.Promise = new function () {
10561057

10571058
race: function (promises) {
10581059
return new Promise(function (resolve, reject) {
1059-
Array.forEach(promises, function (promise) {
1060+
promises.forEach(function (promise) {
10601061
toPromise(promise).then(resolve, reject);
10611062
});
10621063
});
@@ -1065,7 +1066,7 @@ window.Promise || (window.Promise = new function () {
10651066
all: function (promises) {
10661067
return new Promise(function (resolve, reject) {
10671068
var values = [];
1068-
promises = Array.map(promises, toPromise);
1069+
promises = promises.map(toPromise);
10691070
promises.forEach(function (promise, index) {
10701071
promise.then(
10711072
function (value) {

min/jscore-ie10.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

min/jscore-ie9.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

min/jscore-polyfill-ie10.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)