UNPKG

xe-ajax

Version:

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

66 lines (59 loc) 1.66 kB
'use strict' var utils = require('../core/utils') var sendXHR = require('./xhr') var sendHttp = require('./http') var handleExports = require('../handle') /** * fetch * @param { XERequest } request * @param { Function } finish * @param { Function } failed */ function sendFetch (request, finish, failed) { var $fetch = request.$fetch || self.fetch var options = { _request: request, body: request.getBody() } var reqSignal = request.signal utils.arrayEach('method,headers,signal,mode,cache,credentials,redirect,referrer,referrerPolicy,keepalive,integrity'.split(','), function (pro) { if (request[pro]) { options[pro] = request[pro] } }) if (reqSignal && reqSignal.aborted) { failed('ERR_A') } else { $fetch(request.getUrl(), options).then(function (resp) { handleExports.toResponse(resp, request).then(finish) })['catch'](function (e) { failed() }) } } function getRequest (request, reqSignal) { if (!request.progress && !request.timeout) { if (request.$fetch) { return reqSignal ? sendXHR : sendFetch } else if (utils.IS_F) { if (utils.IS_FAC) { return sendFetch } return reqSignal ? sendXHR : sendFetch } } return sendXHR } function createRequestFactory () { if (utils.IS_N) { /* eslint-disable no-undef */ return sendHttp } else if (utils.IS_F) { return function (request) { return getRequest(request, request.signal).apply(this, arguments) } } return sendXHR } var fetchRequest = createRequestFactory() module.exports = fetchRequest