UNPKG

xe-ajax

Version:

异步请求函数,用于浏览器和 node.js 的 HTTP 客户端

55 lines (48 loc) 1.25 kB
'use strict' var utils = require('../core/utils') var XEAbortSignal = require('./abortSignal') var requestList = [] function getSignalIndex (item) { for (var index = 0, len = requestList.length; index < len; index++) { if (item === requestList[index][0]) { return index } } return -1 } /** * 取消控制器 * * @param {XERequest} request XERequest 对象 */ XEAbortSignal.prototype.install = function (request) { var reqSignal = request.signal if (reqSignal) { var index = getSignalIndex(reqSignal) if (index > -1) { requestList[index][1].push(request) } else { requestList.push([reqSignal, [request]]) } } } function XEAbortController () { this.signal = new XEAbortSignal() } XEAbortController.prototype.abort = function () { var index = getSignalIndex(this.signal) if (index > -1) { var requestItem = requestList[index] utils.arrayEach(requestItem[1], function (request) { var item = requestItem[0] request.abort() if (utils.IS_DP) { item._store.aborted = true } else { item.aborted = true } }) requestList.splice(index, 1) } } module.exports = XEAbortController