45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
/* global uni */
|
|
'use strict'
|
|
|
|
const isUploadFile = require('./helper/isUploadFile')
|
|
const format = require('./helper/format')
|
|
|
|
/**
|
|
* 参数配置参考:
|
|
* > axios https://www.npmjs.com/package/axios#request-config
|
|
* > uniapp request https://uniapp.dcloud.io/api/request/request
|
|
* > uniapp upload https://uniapp.dcloud.io/api/request/network-file
|
|
* @param {object} config
|
|
*/
|
|
function uniappAdapter(config = {}) {
|
|
return new Promise(function dispatchUniApp(resolve, reject) {
|
|
const uniConfig = format(config, resolve, reject)
|
|
|
|
let requestTask = null
|
|
if (config.cancelToken) {
|
|
// Handle cancellation
|
|
config.cancelToken.promise.then(function onCanceled(cancel) {
|
|
if (!requestTask) {
|
|
return
|
|
}
|
|
|
|
requestTask.abort()
|
|
reject(cancel)
|
|
// Clean up request
|
|
requestTask = null
|
|
})
|
|
}
|
|
|
|
// Send the request
|
|
if (isUploadFile(config)) {
|
|
requestTask = uni.uploadFile(uniConfig)
|
|
} else {
|
|
requestTask = uni.request(uniConfig)
|
|
}
|
|
})
|
|
}
|
|
module.exports = uniappAdapter
|
|
|
|
// Allow use of default import syntax in TypeScript
|
|
module.exports.default = uniappAdapter
|