在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等结构化的结果,进行解析并处理,在这时候出现以下这几种常见类型 ...
随机推荐
- Openharmony 跑 CV 应用
最近有个项目,老同学让帮忙验证一个在ARM 板上跑 OpenHarmony,然后再集成一个CV算法上去,写这个文章主要是整理一下思路.如果有思路不对的地方,也烦请指出. 1. 个人做纯软件比较多,所以 ...
- Delta Lake 学习
解决了什么问题 delta lake 是有 ACID 支持,有time travel... 对数据可以验证,不再需要 λ 架构 对事务的ACID支持,解决了spark job 可能会中间excepti ...
- Redis 高可用方案原理初探
redis 参考目录: 生产级Redis 高并发分布式锁实战1:高并发分布式锁如何实现 https://www.cnblogs.com/yizhiamumu/p/16556153.html 生产级Re ...
- 面试官:limit 100w,10为什么慢?如何优化?
在 MySQL 中,limit X,Y 的查询中,X 值越大,那么查询速度也就越慢,例如以下示例: limit 0,10:查询时间大概在 20 毫秒左右. limit 1000000,10:查询时间可 ...
- C++ : 如何用C语言实现C++的虚函数机制?
前言 在 googletest的源码中,看到gtest-matchers.h 中实现的MatcherBase 类自定义了一个 VTable,这种设计实现了一种类似于C++虚函数的机制.C++中的虚函数 ...
- Go runtime 调度器精讲(一):Go 程序初始化
原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 本系列将介绍 Go runtime 调度器.要学好 Go 语言,runtime 运行时是绕不过去的,它相当于一层"操作系统" ...
- JS之Math.sin与Math.cos介绍及应用-实现鼠标点击后的烟花效果
基本介绍 Math.sin(x) :x 的正玄值.返回值在 -1.0 到 1.0 之间: Math.cos(x) :x 的余弦值.返回的是 -1.0 到 1.0 之间的数: 其中函数中是x是指&quo ...
- CSS & JS Effect – fade in
参考: stackoverflow – Is there a CSS-only (pure CSS) workaround to apply fade-in and fade-out on objec ...
- LoRaWAN网关价格干穿地板了
废话不多说,不要998,不要688,以太网版本只要398,4G版本只要498. 先上图片 1.1 产品特点 ◆ 高性能嵌入式硬件平台 ◆ 使用工业级 Cat.1 4G 模块 ◆ 宽压输入 DC 9-2 ...
- python——celery异常consumer: Cannot connect to redis://127.0.0.1:6379/1: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.
1.检查 Redis 日志: 查看 Redis 的日志文件(通常位于 /var/log/redis/redis-server.log 或者根据你的配置文件中指定的位置),以获取有关错误原因的详细信息. ...