uniapp:配置动态接口域名,根据图片访问速度,选择最快的接口

common.js

// 动态测速选择的域名
// h5直接返回默认第一个域名
// vue文件用到域名的话用this.$baseURL
let domains = [{uri:'192.168.31.215:9523', speed:0},{uri:'api.ceshi.org', speed:0},
]export const protocol = {api: 'http://',//本地// api: 'https://api.',//正式h5Url: 'https://www.',//正式downAPPUrl: 'https://download.'//正式
}export async function getDomain(){const result = new Promise((resolve, reject)=>{testSpeed().then(res=>{resolve(res)}).catch(()=>{resolve(domains[0].uri)})})return result
}// 得出最快的域名
// speedTest.jpg 需要提前放到服务器上,根据图片的访问速度来选择请求的接口
function testSpeed(){return new Promise((resolve, reject)=>{let array = []domains.forEach((item, index) => {array.push(getSpeedWithAjax(`${protocol.api}${item.uri}/images/speedTest.jpg`))})Promise.all(array).then(res=>{console.log(res);domains.forEach((e,i)=>{e.speed = res[i]})let arr = sort_uris(domains)resolve(arr[0].uri)}).catch((err)=>{console.log(err);reject()})})}
// 测速后排序数组
function sort_uris(array) {let compare = function(obj1, obj2) {var val1 = obj1.speed;var val2 = obj2.speed;if (val1 < val2) {return -1;} else if (val1 > val2) {return 1;} else {return 0;}}return array.filter((num) => {return num.speed > 0;}).sort(compare)
}function getSpeedWithAjax(url){return new Promise((resolve, reject) => {let start = null;let end = null;start = new Date().getTime();const xhr = uni.request({url,timeout:2000,success: () => {end = new Date().getTime();resolve(end - start)},fail: () => {resolve(0)}});})
}

main.js

import { getDomain, protocol } from '@/utils/common.js' //公共方法
getDomain().then(domain=>{console.log(domain);// H5地址let h5Url = `${protocol.h5Url}${domain}`// APP下载地址let downAPPUrl = `${protocol.downAPPUrl}${domain}`// 接口let baseUrl = `${protocol.api}${domain}`uni.$emit('urlChange',{baseUrl})Object.assign(Vue.prototype, {'$downAPPUrl':downAPPUrl,'$h5Url':h5Url,'$imgUrl':baseUrl,})const app = new Vue({...App,i18n})app.$mount()
})

request.js

let baseURL;
uni.$on('urlChange',data=>{baseURL = data.baseUrl
})
// 这个baseURL  就是根据图片访问速度 动态获取到的接口url
console.log(baseURL)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/142697.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue.js】使用ElementUI搭建动态树数据表格与分页

一&#xff0c;动态树 本文章为上一篇文章拓展内容》》实现首页导航及左侧菜单 将左侧菜单结构更换为下面代码&#xff1a; 菜单结构&#xff1a; <el-menu><el-submenu index"" key""><template slot"title"><i class…

1526. 形成目标数组的子数组最少增加次数;2008. 出租车的最大盈利;1589. 所有排列中的最大和

1526. 形成目标数组的子数组最少增加次数 核心思想&#xff1a;差分数组。对于一个数组a,要想从全为0的数组增加1变为它&#xff0c;等价于从a减少1变为全0的数组。然后a有一个差分数组d&#xff0c;对于a区间的[L,R]减少1操作等价于对d[L]-1,然后d[R1]1。你想让a变为全0&…

灰色预测GM(1,1)

目录 一、灰色预测模型简介 二、GM(1,1)灰色模型 1、GM(1,1)模型预测方法 &#xff08;1&#xff09;原始数据&#xff08;参考列&#xff09; &#xff08;2&#xff09;累加生成序列&#xff08;Acumulated Generating Operator,1-AGO&#xff09; &#xff08;3&#xff…

PHY6252—超高性价比蓝牙/2.4G芯片

PHY6252是用于蓝牙5.2应用的芯片&#xff08;SOC&#xff09;系统。它具有高性能的低功率32位处理器&#xff0c;具有64K保留SRAM&#xff0c;512/256KB flash&#xff0c;96KB ROM&#xff0c;256bit Efuse和超低功率&#xff0c;高性能&#xff0c;多模式广播。此外&#xff…

03 MIT线性代数-矩阵乘法和逆矩阵Multiplication inverse matrices

1. 矩阵乘法 Matrix multiplication 我们通过四种方法讨论如何使矩阵A与B相乘得到矩阵C。其中A为mxn&#xff08;m行n列&#xff09;矩阵&#xff0c;而B为nxp矩阵&#xff0c;则C为mxp矩阵&#xff0c;记cij为矩阵C中第i行第j列的元素 1.1 Regular way 矩阵乘法的标准计算方…

分享从零开始学习网络设备配置--任务4.1 IPv6地址的基本配置

任务描述 某公司构建了互联互通的办公网&#xff0c;需要不断扩大网络规模。网络管理员小赵决定采用IPv6的地址&#xff0c;满足公司网络规模的未来发展。 由于IPv4地址耗尽及IPv4地址区域分配不均衡&#xff0c;成为运营商必须面临的一个问题。另外随着互联网的商业化&#…

Matlab信号处理:FFT频谱分辨率

频谱分辨率&#xff1a; 其中为采样间隔&#xff0c;为采样点数。 FFT分辨率&#xff1a; 其中为采样频率&#xff0c;为FFT点数。 有两正弦函数&#xff0c;频率分别为 f1 1Hz&#xff0c;f2 10Hz&#xff0c;f3 40Hz&#xff1b; 示例1&#xff1a; 采样频率 fs 1000H…

sox音频处理和ffmpeg评测

ffmpeg音频处理不如sox&#xff0c;ffmpeg切分&#xff0c;最低切分是0.1秒&#xff0c;而sox可以切分更小单位0.001这种 ffmpeg处理视频等功能更全。 命令 ffmpeg -i 2.wav -y -ss 0.01 -acodec copy test.wav sox 2.wav output2.wav trim 0.01

抖 X-Bongus 参数逆向 python案例实战

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 知识点&#xff1a; 动态数据抓包 requests发送请求 X-Bogus 参数逆向 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 requests pip ins…

CleanMyMac X版本4.14.2中文版新功能介绍

CleanMyMac X版本4.14.2中文版是一款专业的Mac清理工具&#xff0c;只需要一键智能清理&#xff0c;便能让Mac恢复原始的性能&#xff0c;是MAC系统非常好用的工具。CleanMyMac X自身拥有一个安全数据库&#xff0c;它是一个项目列表&#xff0c;拥有一定的规格&#xff0c;可以…

24届近3年中国矿业大学自动化考研院校分析

所谓又专又精&#xff0c;专是指我们售后群团队上百人都是自动化研究生&#xff0c;精是指我们只做自动化这一门专业学科7年了&#xff0c;研究到极致&#xff01; &#x1f509;今天学姐给大家带来的是中国矿业大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 目录…

网络安全内网渗透之DNS隧道实验--dnscat2直连模式

目录 一、DNS隧道攻击原理 二、DNS隧道工具 &#xff08;一&#xff09;安装dnscat2服务端 &#xff08;二&#xff09;启动服务器端 &#xff08;三&#xff09;在目标机器上安装客户端 &#xff08;四&#xff09;反弹shell 一、DNS隧道攻击原理 在进行DNS查询时&#x…

【考研】2023暨南大学848答案 2020-2023 计算机基础综合 830答案

&#x1f525;&#x1f525; I 仓库 还在更新&#xff0c;敬请期待 &#x1f525;暨南大学计算机848报考信息汇总仓库 仓库内有20年真题答案 https://github.com/zhanjuex/JNU_848 备用仓库 (目录可能用不了 https://xindon.coding.net/public/open/JNU_848/git/files &#x1…

暗月中秋靶场活动writeup

前言 暗月在中秋节搞了个靶场活动&#xff0c;一共有4个flag&#xff0c;本着增长经验的想法参加了本次活动&#xff0c;最终在活动结束的时候拿到了3个flag&#xff0c;后面看了其他人的wp也复现拿到第四个flag。过程比较曲折&#xff0c;所以记录一下。 靶场地址 103.108.…

获得京东商品详情(关键词搜索,店铺所有商品)API接口返回值说明

京东API接口&#xff0c;简单而言&#xff0c;就是一套工具&#xff0c;可以帮助你与京东平台的数据与功能进行智能对接。它能够让你的店铺信息、商品信息、用户数据等信息实现高效流通&#xff0c;帮助你更好地理解客户需求 我们深知数据安全的重要性&#xff0c;因此&#x…

【图像去噪】【TGV 正则器的快速计算方法】通过FFT的总(广义)变化进行图像去噪(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Simulink 封装

快捷键&#xff1a; Edit Mask&#xff1a;CtrlM Look Under Mask&#xff1a;CtrlU 封装之后的模型&#xff1a; Edit Mask界面&#xff1a; 双击模块后的提示界面&#xff1a; 封装的模块内部&#xff1a;

地球的某一片红薯地中秋圆辉少许《乡村振兴战略下传统村落文化旅游设计》——2023学生旅行季许少辉八月新书想象和世界一样宽广

地球的某一片红薯地中秋圆辉少许《乡村振兴战略下传统村落文化旅游设计》——2023学生旅行季许少辉八月新书想象和世界一样宽广 地球的某一片红薯地中秋圆辉少许《乡村振兴战略下传统村落文化旅游设计》——2023学生旅行季许少辉八月新书想象和世界一样宽广

异地恋的甜蜜解药:李哥的群晖Videostation电影分享教程

异地恋的甜蜜解药&#xff1a;李哥的群晖Videostation电影分享教程 文章目录 异地恋的甜蜜解药&#xff1a;李哥的群晖Videostation电影分享教程1.使用环境要求2.制作视频分享链接3.制作永久固定视频分享链接 李哥和他的女朋友是一对甜蜜的情侣&#xff0c;但不幸的是&#xff…

Antolin EDI 对接手册

Antolin是一家国际性的汽车零部件制造商&#xff0c;专门生产和供应汽车内饰和外饰零部件。公司总部位于西班牙&#xff0c;在全球范围内拥有多个制造和分销设施。Antolin的产品范围包括各种汽车内饰部件&#xff0c;如门板、仪表板、中控台、天窗、座椅、地毯和其他装饰件&…