You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.3 KiB
44 lines
1.3 KiB
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
var Observable_1 = require("../../Observable"); |
|
function fromFetch(input, init) { |
|
return new Observable_1.Observable(function (subscriber) { |
|
var controller = new AbortController(); |
|
var signal = controller.signal; |
|
var outerSignalHandler; |
|
var abortable = true; |
|
var unsubscribed = false; |
|
if (init) { |
|
if (init.signal) { |
|
outerSignalHandler = function () { |
|
if (!signal.aborted) { |
|
controller.abort(); |
|
} |
|
}; |
|
init.signal.addEventListener('abort', outerSignalHandler); |
|
} |
|
init.signal = signal; |
|
} |
|
else { |
|
init = { signal: signal }; |
|
} |
|
fetch(input, init).then(function (response) { |
|
abortable = false; |
|
subscriber.next(response); |
|
subscriber.complete(); |
|
}).catch(function (err) { |
|
abortable = false; |
|
if (!unsubscribed) { |
|
subscriber.error(err); |
|
} |
|
}); |
|
return function () { |
|
unsubscribed = true; |
|
if (abortable) { |
|
controller.abort(); |
|
} |
|
}; |
|
}); |
|
} |
|
exports.fromFetch = fromFetch; |
|
//# sourceMappingURL=fetch.js.map
|