关于vue中使用全局变量的问题
admin
2024-05-10 17:50:10

先看需求: 点击开始,使用fetch()发送请求,接收数据流.  点击停止,终止fetch()请求。

问题:要想终止fecth() 请求的数据流, 就要销毁new的方法

方法1. 创建存放全局变量的js

在store文件夹中新建js文件config,并填入内容,将其暴露出去

const controller = new AbortController();
const signal = controller.signal;export {signal,controller,
}

在main.js中:

import {signal,controller,
}from "@/store/config.js"Vue.prototype.signal = signal;
Vue.prototype.controller = controller;

这样在vue文件中就可使用了,例如:

this.controller.abort(); // 终止请求

方法1new的方法是手动创建的,每次销毁之后,在不刷新的前提下,是没办法重新new的, 实际操作就是, 点击了开始接收数据流, 点击停止销毁方法,停止接收数据流,   在不刷新页面的前提下想要再次点击开始,接收数据流, 然后就没办法停止了.就只能方法2了

方法2 将new的方法,挂载到window上.

像这样:

window["controller" + (index + 1)] = new AbortController();window["signal" + (index + 1)] =window["controller" + (index + 1)].signal;

我这里的index是循环出来多个,  每次点击开始,就新建一次.

在点击停止的时候就销毁:

   window["controller" + (index + 1)].abort();

这样就非常简便的实现了想要的功能.

哪里写的不对的, 欢迎讨论~

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...