jam-cloud/jam-ui/node_modules/google-maps-react/dist/lib/cancelablePromise.js

40 lines
1.1 KiB
JavaScript

(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(["exports"], factory);
} else if (typeof exports !== "undefined") {
factory(exports);
} else {
var mod = {
exports: {}
};
factory(mod.exports);
global.cancelablePromise = mod.exports;
}
})(this, function (exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
// https://facebook.github.io/react/blog/2015/12/16/ismounted-antipattern.html
var makeCancelable = exports.makeCancelable = function makeCancelable(promise) {
var hasCanceled_ = false;
var wrappedPromise = new Promise(function (resolve, reject) {
promise.then(function (val) {
return hasCanceled_ ? reject({ isCanceled: true }) : resolve(val);
});
promise.catch(function (error) {
return hasCanceled_ ? reject({ isCanceled: true }) : reject(error);
});
});
return {
promise: wrappedPromise,
cancel: function cancel() {
hasCanceled_ = true;
}
};
};
});