mirror of
https://github.com/zotero/zotero.git
synced 2026-09-28 01:31:40 +00:00
BluebirdShimPromise: Add value() and fix isResolved() semantics
- value() is used in noWait export translation - isResolved() technically means fulfilled or rejected -- unclear if we ever depended on that, but it might as well be correct
This commit is contained in:
parent
dd5667c09b
commit
d797c7a4d8
1 changed files with 17 additions and 1 deletions
|
|
@ -20,17 +20,33 @@ export class BluebirdShimPromise extends Promise {
|
|||
let returnValue = fn.apply(this, args);
|
||||
let promise;
|
||||
let isResolved = false;
|
||||
let isFulfilled = false;
|
||||
if (returnValue && returnValue.then) {
|
||||
promise = returnValue;
|
||||
}
|
||||
else {
|
||||
promise = Promise.resolve(returnValue);
|
||||
isResolved = true;
|
||||
isFulfilled = true;
|
||||
}
|
||||
if (typeof promise.isResolved === 'undefined') {
|
||||
promise.then(() => isResolved = true, () => {});
|
||||
promise.then(
|
||||
() => {
|
||||
isResolved = true;
|
||||
isFulfilled = true;
|
||||
},
|
||||
() => isResolved = true
|
||||
);
|
||||
promise.isResolved = () => isResolved;
|
||||
}
|
||||
if (promise.value === undefined) {
|
||||
promise.value = () => {
|
||||
if (!isFulfilled) {
|
||||
throw new Error("value() called on unfulfilled promise");
|
||||
}
|
||||
return returnValue;
|
||||
};
|
||||
}
|
||||
return promise;
|
||||
}
|
||||
catch (e) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue