axios如何一次性发送多个网络请求?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了axios如何一次性发送多个网络请求?相关的知识,希望对你有一定的参考价值。

‘- axios().then().catch() 默认发送一个请求 axios.get() axios.post 为简写
- 如果要一次性发送多个请求需要使用 axios.all()函数操作
axios.all([
axios.get('/heima',params:name:itcast),
axios.get('/itcast',params:name:hima)
])
.then(axios.spread(function (hmRes,itRes)
console.log('heima', hmRes.data);
console.log('itcast', itRes.data);

));
以上代码发出来不知道格式还对不对,有需要的话。可以去黑马程序员社区看Python相关版块内容。官网还可以领取学习大纲和配套基础班免费课程。
参考技术A 这个如何一次性发应该发送的话在网络上面那算的话它有这个功能就可以一次性发送如果发送不了多条的。 参考技术B 家庭组同样不需要密码的,设置成家庭网络后,将你要共享的文件右击,设置成家庭组共享就OK了

Axios 如何取消已发送的请求?

前言

最近在项目中遇到一个问题,在连续发送同一请求时,如果第二次请求比第一次请求快,那么实际显示的是第一次请求的数据,这就会造成数据和我选择的内容不一致的问题。解决的方案:在后续发送请求时,判断之前的请求是否完成(同一个接口),如果未完成则立即取消。然后在发送新的请求。

Axios 介绍

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

Axios 使用 cancel token 取消请求

Axios 的 cancel token API 基于cancelable promises proposal,它还处于第一阶段。

  1. 可以使用 CancelToken.source 工厂方法创建 cancel token,像这样:
var CancelToken = axios.CancelToken;
var source = CancelToken.source();

axios.get(‘/user/12345‘, {
  cancelToken: source.token
}).catch(function(thrown) {
  if (axios.isCancel(thrown)) {
    console.log(‘Request canceled‘, thrown.message);
  } else {
    // 处理错误
  }
});

// 取消请求(message 参数是可选的)
source.cancel(‘Operation canceled by the user.‘);

2.还可以通过传递一个 executor 函数到 CancelToken 的构造函数来创建 cancel token:

var CancelToken = axios.CancelToken;
var cancel;

axios.get(‘/user/12345‘, {
  cancelToken: new CancelToken(function executor(c) {
    // executor 函数接收一个 cancel 函数作为参数
    cancel = c;
  })
});

// 取消请求
cancel();

我自己在项目中用的是第二种方案:

提取所有的 api 进行封装:

import request from ‘../utils/request‘  // 配置过的Axios 对象
import axios from ‘axios‘ 

export function getLatenessDetailSize(params, that) { 
    return request({
        url: ‘/api/v1/behaviour/latenessDetailSize‘, 
        method: ‘post‘,
        params: params,
        cancelToken: new axios.CancelToken(function executor(c) { // 设置 cancel token
            that.source = c;
        })
    })
}

export  xxx

具体的业务组件:

import { getLatenessDetail } from "../api";
export default {
        data() {
            return {
                tableData: [],
                total: 0,
                page: 1,
                loadTable: false,
                params: { },
                source: null
            }
        },
        methods: {
            cancelQuest() {
                if (typeof this.source === ‘function‘) {
                    this.source(‘终止请求‘); //取消请求
                }
            },
            getTableData(val) {
                this.cancelQuest() // 请求发送前调用
                this.page = val
                this.loadTable = true
                getLatenessDetail(this.params, (val - 1) * 10, this)
                    .then(
                        res => {
                            this.loadTable = false
                            this.tableData = res.data
                        }
                )
        }
}

以上是关于axios如何一次性发送多个网络请求?的主要内容,如果未能解决你的问题,请参考以下文章

一篇文章带你了解axios网络交互-Vue

vue开发中有几种网络请求方式?用哪一种

axios监听当前请求啥类型

如何避免在 axios 中发送多个重复的 AJAX 请求

Vue.js / Vuex + axios 发送多个 PUT 请求

Axios 如何取消已发送的请求?