在vue2中按顺序调用多个接口,接收返回数据
最近有一个点一个按钮调用多个接口,并且按顺序串行调用,根据后端返回的逻辑,区分接口之间的串行关系,前面的接口失败是否继续执行下面接口,有两种方式,都是循环调用接口,实现方式有点差别
第一种reduce+promise
var resolves = [];
callAPI(obj) {
return new Promise((resolve, reject) => {
// 一些公共参数
let params = {
channelCode: "",
menuCode: "",
operatorNo: "",
};
obj["apiName"](Object.assign(params, obj.parse))
.then((res) => {
if (Object.keys(res).length > 0) {
resolves.push(res);
}
resolve(res);
})
.catch((err) => {
if (Object.keys(err).length > 0) {
resolves.push(err);
} // 如果不需要管前面接口返回结果,这里写resolve(err),否则写reject(err)
resolve(err);
});
});
},
async dealFuc() {
const arr = [
{
apiName: apiName1, // 接口的名字
parse: {
// 接口入参
transCode: "ABCD0001",
},
},
{
apiName: apiName2,
parse: {
transCode: "ABCD0002",
},
},
]; return arr.reduce((chain, url) => {
return chain.then(() => {
return this.callAPI(url);
});
}, Promise.resolve());
}, // 初始化调用,放在mounted中
this.dealFuc()
.then((res) => {
modal.alert({
message: JSON.stringify(resolves, null, 2),
okTitle: "接收到的值",
});
this.log("所有接口调用完成", "success");
})
.catch((err) => {
modal.alert({ message: err, okTitle: "报错" });
this.log("执行过程中出错", "error");
});
第二种方法:for循环+promise
function dealFuc() {
const arr = [
{
apiName: corpCheckCustomer,
parse: {
transCode: "",
customerNo: "303390266",
},
},
{
apiName: accSonTypeQuery,
parse: {
transCode: "TNYK0009",
productCode: "11020004",
},
},
];
(async () => {
try {
var data = [];
for (var i = 0; i < arr.length; i++) {
let result = await new Promise((resolve, reject) => {
setTimeout(() => {
let params = {
channelCode: "SW01",
menuCode: "10302",
operatorNo: this.operatorNo,
};
arr[i]["apiName"](Object.assign(params, arr[i].parse))
.then((res) => {
resolve(res);
})
.catch((err) => {
// 判断如果第二个接口依赖于第一个接口,则写成reject(err),否则resolve(err)
resolve(err);
});
});
});
if (Object.keys(result).length > 0) {
data.push(result);
}
}
this.$logi("data:======", data);
} catch (e) {
console.log({ message: e });
}
})();
}
在vue2中按顺序调用多个接口,接收返回数据的更多相关文章
- charles_01_打断点修改接口请求&返回数据
前言 测试过程中,为了模拟某场景测试,经常需要修改接口请求或者返回数据.可通过抓包工具打断点,实现模拟测试场景.常用的抓包工具charles和fiddler均可打断点mock数据.由于小编安装了cha ...
- Requests方法 -- 参数关联与JSESSION(上一个接口的返回数据作为下一个接口的请求参数)
前言 参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了.最常见的案例就是网站的登录案例,很多网站的登录并不仅仅 ...
- PHP开发APP接口之返回数据
首先说明一下客户端APP通信的格式 1.xml:扩展标记语言(1.用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,xml格式统一,跨平台和语言,非常适合数据传输和通信,早已 ...
- springmvc中Controller前端控制器的映射与返回数据,以及异常处理
.@RequestMapping映射 该注解中存的是映射路径的字符串 1.1 value的值是一个数组,也就是说可以定义多个访问路径,同时“.action”可以省略,前端控制器中主要查找主体部分.注意 ...
- java内部类(构造spring中的接收返回数据的实体类)
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟. 原文链 ...
- C#调用sap接口及返回数据到sap
public class SapClass { /// <summary> /// /// </summary> /// <param name="fphm&q ...
- 用RestTemplate调取接口,取得返回数据,携带header,动态拼接url ,动态参数
记录我自己的工作 get 请求 ,携带 请求头 header (token) url 根据参数 动态拼接 参数 放入 map 动态拼接 private String lclUrl = &quo ...
- 远程带参数POST访问接口,返回数据
1. string token = GetRequest.GetString("token"); int customer_id = GetRequest.GetInt(" ...
- Java封装接口统一返回数据模板
现在大多数都使用前后端分离开发模式,前端通过Ajax请求访问后台服务器,后台返回JSON数据供前端操作,这里编写一个统一返回数据模板类,方便日后操作 public class R extends Ha ...
- carry-检查数据接口返回数据合法性
问题背景: 在测试&部署监控过程中,我们常常会遇到外部接口返回数据不靠谱的时候.最常见的场合是从某个http获取如json和xml等结构化的结果,进行解析并处理,在这时候出现以下这几种常见类型 ...
随机推荐
- vue grid layout 设定某组件为最低位,其它子item无法拖拽超过
逻辑: 设定某项X为底部 逻辑: for 循环获取最低位的item Y的信息:i 和 y 如果i != X.i initY = X.y 则调整X.y ...
- three.js添加3d模型
three官方的几何体也就那么几个,想要生成各种各样的模型,其难度十分之大,这时引入外部模型也不失为一种选择.具体引入办法如下. 导入依赖 点击查看代码 import * as THREE from ...
- Vue配置代理(devServer)解决跨域问题
1.作用: Vue官方文档的解释是: 如果你的前端应用和后端 API 服务器没有运行在同一个主机上,你需要在开发环境下将 API 请求代理到 API 服务器.这个问题可以通过 vue.config.j ...
- linux 环境中cat命令进行关键字搜索
在linux环境中通过关键字搜索文件里面的内容 1.显示文件里匹配关键字那行以及上下50行 cat 文件名 | grep -C 50 '关键字' 2.显示关键字及前50行 cat 文件名 | grep ...
- 小tips:vue2中broadcast和dispatch的实现
/* * broadcast 事件广播 * @param {componentName} 组件名称 * @param {eventName} 事件名 * @param {params} 参数 * 遍历 ...
- 记一次 .NET某上位机视觉程序 卡死分析
一:背景 1. 讲故事 前段时间有位朋友找到我,说他的窗体程序在客户这边出现了卡死,让我帮忙看下怎么回事?dump也生成了,既然有dump了那就上 windbg 分析吧. 二:WinDbg 分析 1. ...
- EntityFramework Core并发迁移解决方案
场景 目前一个项目中数据持久化采用EF Core + MySQL,使用CodeFirst模式开发,并且对数据进行了分库,按照目前颗粒度分完之后,大概有一两百个库,每个库的数据都是相互隔离的. 借鉴了G ...
- 暑假集训CSP提高模拟7
这个 T1 的 \(n^{3}\) 的 SPJ 效率还是太慢了,膜拜 SPJ 大神学长,还会画画 A.Permutations & Primes 这题感觉挺水的但是感觉有不是那么水,主要还是因 ...
- yarn : 无法加载文件 C:\Users\zhulo\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?Li nkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 + yarn serve
powershell的执行策略问题: 解决办法: 管理员身份打开powershell 输入 set-ExecutionPolicy RemoteSigned 然后选择 a or Y :
- 015 Python 的输入输出和字符串格式化(终于可以和计算机交流了)
#!/usr/bin/env python # -*- coding:utf-8 -*- # Datatime:2022/7/26 20:11 # Filename:015 Python 的输入输出和 ...