| | |
| | | 'use strict'
|
| | |
|
| | | function InterceptorManager() {
|
| | | this.handlers = []
|
| | | }
|
| | |
|
| | | /**
|
| | | * Add a new interceptor to the stack
|
| | | *
|
| | | * @param {Function} fulfilled The function to handle `then` for a `Promise`
|
| | | * @param {Function} rejected The function to handle `reject` for a `Promise`
|
| | | *
|
| | | * @return {Number} An ID used to remove interceptor later
|
| | | */
|
| | | InterceptorManager.prototype.use = function use(fulfilled, rejected) {
|
| | | this.handlers.push({
|
| | | fulfilled,
|
| | | rejected
|
| | | })
|
| | | return this.handlers.length - 1
|
| | | }
|
| | |
|
| | | /**
|
| | | * Remove an interceptor from the stack
|
| | | *
|
| | | * @param {Number} id The ID that was returned by `use`
|
| | | */
|
| | | InterceptorManager.prototype.eject = function eject(id) {
|
| | | if (this.handlers[id]) {
|
| | | this.handlers[id] = null
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * Iterate over all the registered interceptors
|
| | | *
|
| | | * This method is particularly useful for skipping over any
|
| | | * interceptors that may have become `null` calling `eject`.
|
| | | *
|
| | | * @param {Function} fn The function to call for each interceptor
|
| | | */
|
| | | InterceptorManager.prototype.forEach = function forEach(fn) {
|
| | | this.handlers.forEach((h) => {
|
| | | if (h !== null) {
|
| | | fn(h)
|
| | | }
|
| | | })
|
| | | }
|
| | |
|
| | | export default InterceptorManager
|
| | | 'use strict' |
| | | |
| | | function InterceptorManager() { |
| | | this.handlers = [] |
| | | } |
| | | |
| | | /** |
| | | * Add a new interceptor to the stack |
| | | * |
| | | * @param {Function} fulfilled The function to handle `then` for a `Promise` |
| | | * @param {Function} rejected The function to handle `reject` for a `Promise` |
| | | * |
| | | * @return {Number} An ID used to remove interceptor later |
| | | */ |
| | | InterceptorManager.prototype.use = function use(fulfilled, rejected) { |
| | | this.handlers.push({ |
| | | fulfilled, |
| | | rejected |
| | | }) |
| | | return this.handlers.length - 1 |
| | | } |
| | | |
| | | /** |
| | | * Remove an interceptor from the stack |
| | | * |
| | | * @param {Number} id The ID that was returned by `use` |
| | | */ |
| | | InterceptorManager.prototype.eject = function eject(id) { |
| | | if (this.handlers[id]) { |
| | | this.handlers[id] = null |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Iterate over all the registered interceptors |
| | | * |
| | | * This method is particularly useful for skipping over any |
| | | * interceptors that may have become `null` calling `eject`. |
| | | * |
| | | * @param {Function} fn The function to call for each interceptor |
| | | */ |
| | | InterceptorManager.prototype.forEach = function forEach(fn) { |
| | | this.handlers.forEach((h) => { |
| | | if (h !== null) { |
| | | fn(h) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export default InterceptorManager |