Skip to content

使用方法

发起请求

我们直接引入的包或创建的请求实例都是一个函数,调用该函数即可发起请求。

js
// 通过引入的包调用发起请求
import ajax from 'uni-ajax'
ajax()

// 通过创建的请求实例发起请求
const instance = ajax.create()
instance()

该函数接收两种参数类型,返回都是 Promise。你可根据自己的实际情况使用。

js
/**
 * @param {object} config 无回调属性的请求配置对象
 * @returns {Promise.resolve} 响应成功对象
 * @returns {Promise.reject} 请求或响应失败对象
 */
ajax(config)

/**
 * @param {string} url 请求地址
 * @param {string|object} data 请求参数
 * @param {object} config 无回调属性的请求配置对象
 * @returns {Promise.resolve} 响应成功对象
 * @returns {Promise.reject} 请求或响应失败对象
 */
ajax(url, data, config)
传入回调属性参数 2.5.0

你也可以传入回调属性参数,但该方式使用率较低,所以在 2.5.0 版本已弃用。

js
/**
 * @param {object} config 含回调属性 (至少传入一个 success / fail / complete 参数) 的请求配置对象
 * @returns {Promise.resolve} undefined
 * @returns {Promise.reject}
 */
ajax(config)

为了方便起见,已经为所有支持的请求方法提供了别名。并且调用这些方法的参数跟上面一样,但不同的是在方法别名中传入的 method 是无效的。

js
ajax.get()
ajax.post()
ajax.put()
ajax.delete()

请求配置

上面的请求方法提到了 请求配置对象,那么这个对象里有什么属性呢?你可以通过下面文档查看详细内容。

参考:请求配置

响应结构

请求的响应包含以下信息。

参数类型说明
dataObject / String / ArrayBuffer服务器返回的数据
statusCodeNumber服务器响应的 HTTP 状态码
headerObject服务器响应的头
configObject请求提供的配置信息
cookiesArray<string>服务器返回的 cookies,格式为字符串数组

取消请求

2.6.0 开始,支持使用 AbortController 取消请求:2.6.0
之前版本可通过下面的 RequestTask 方式。

js
const controller = new AbortController()
ajax({ signal: controller.signal })

controller.abort() // 取消请求

注意的是 AbortController 仅支持 H5,其他环境可以通过下面方式使用:

bash
# 安装依赖
npm install abort-controller
js
// vite.config.ts
export default defineConfig({
  resolve: {
    alias: {
      'abort-controller': 'abort-controller/dist/abort-controller'
    }
  }
})
js
// 如果没有上面的 vite 配置则需要引入完整路径
// import { AbortController } from 'abort-controller/dist/abort-controller'

// #ifndef H5
import { AbortController } from 'abort-controller'
// #endif

RequestTask

网络请求任务对象。

方法说明
abort中断请求任务
onHeadersReceived监听 HTTP Response Header 事件。会比请求完成事件更早,仅 微信小程序平台 支持
offHeadersReceived取消监听 HTTP Response Header 事件,仅 微信小程序平台 支持
通过 fetcher 获取:2.6.0

使用 Fetcher 抓取器实例来获取 RequestTask2.5.0

js
import ajax, { Fetcher } from 'uni-ajax'

const fetcher = new Fetcher()
ajax({ fetcher })

fetcher.abort() // 中断请求(Fetcher 只封装了 abort 方法,其他请使用 source 获取使用)
const requestTask = await fetcher.source() // 获取请求任务对象
请求方法调用或通过 xhr 获取:2.5.0

直接调用。这里 request 接收的是封装后的 Promise,并支持 RequestTask 的以上方法。但实际并非真正的 RequestTask 对象。只是封装继承 Promise 并挂载 RequestTask 的同名方法。

js
const request = ajax('https://www.example.com/api/demo')
request.abort()

获取 RequestTask 对象调用。通过参数请求选项的 xhr 回调参数也可以获取 RequestTask 对象。

js
ajax({
  url: 'https://www.example.com/api/demo',
  xhr: (requestTask, config) => {
    requestTask.abort()
  }
})

Released under the MIT License.