@discuzq/sdk
Version:
discuz dsk
74 lines (55 loc) • 2.48 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
require("core-js/modules/es.object.to-string.js");
require("core-js/modules/es.promise.js");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.taroAdapter = void 0;
var _settle = _interopRequireDefault(require("axios/lib/core/settle"));
var _createError = _interopRequireDefault(require("axios/lib/core/createError"));
var _taro = _interopRequireDefault(require("@tarojs/taro"));
var _type = require("../../utils/type");
var _common = require("./common");
/**
* 处理 taro 框架的请求
*/
var taroAdapter = function taroAdapter(config) {
return new Promise(function (resolve, reject) {
var requestConfig = (0, _common.transfromRequest)(config); // http://taro-docs.jd.com/taro/docs/apis/network/request/request
// http://taro-docs.jd.com/taro/docs/apis/network/request/RequestTask
var request = _taro.default.request(requestConfig);
var requestTask = request.then(function (response) {
return (0, _common.transformResponse)(response, config, request);
});
var requestTaskAbort = requestTask.abort; // 设置超时
var timer = null;
if (config.timeout) {
timer = setTimeout(function () {
requestTaskAbort && requestTaskAbort();
var timeoutErrorMessage = config.timeoutErrorMessage;
if (!config.timeoutErrorMessage) timeoutErrorMessage = "timeout of ".concat(config.timeout, "ms exceeded"); // 和 axios 报错对齐
reject((0, _createError.default)(timeoutErrorMessage, config, 'ECONNABORTED', requestTask));
}, config.timeout);
}
requestTask.then(function (response) {
timer && clearTimeout(timer);
(0, _settle.default)(resolve, reject, response);
}).catch(function (response) {
timer && clearTimeout(timer);
if ((0, _type.isObject)(response) && (!(0, _type.isNull)(response.status) || !(0, _type.isNull)(response.statusCode))) {
(0, _settle.default)(resolve, reject, (0, _common.transformResponse)(response, config, request));
} else {
reject((0, _createError.default)('Network Error', config, null, requestTask));
}
});
if (config.cancelToken) {
config.cancelToken.promise.then(function (cancel) {
timer && clearTimeout(timer);
requestTaskAbort && requestTaskAbort();
reject(cancel);
});
}
});
};
exports.taroAdapter = taroAdapter;