最近有一个点一个按钮调用多个接口,并且按顺序串行调用,根据后端返回的逻辑,区分接口之间的串行关系,前面的接口失败是否继续执行下面接口,有两种方式,都是循环调用接口,实现方式有点差别

第一种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中按顺序调用多个接口,接收返回数据的更多相关文章

  1. charles_01_打断点修改接口请求&返回数据

    前言 测试过程中,为了模拟某场景测试,经常需要修改接口请求或者返回数据.可通过抓包工具打断点,实现模拟测试场景.常用的抓包工具charles和fiddler均可打断点mock数据.由于小编安装了cha ...

  2. Requests方法 -- 参数关联与JSESSION(上一个接口的返回数据作为下一个接口的请求参数)

    前言 参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了.最常见的案例就是网站的登录案例,很多网站的登录并不仅仅 ...

  3. PHP开发APP接口之返回数据

    首先说明一下客户端APP通信的格式 1.xml:扩展标记语言(1.用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,xml格式统一,跨平台和语言,非常适合数据传输和通信,早已 ...

  4. springmvc中Controller前端控制器的映射与返回数据,以及异常处理

    .@RequestMapping映射 该注解中存的是映射路径的字符串 1.1 value的值是一个数组,也就是说可以定义多个访问路径,同时“.action”可以省略,前端控制器中主要查找主体部分.注意 ...

  5. java内部类(构造spring中的接收返回数据的实体类)

    说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟. 原文链 ...

  6. C#调用sap接口及返回数据到sap

    public class SapClass { /// <summary> /// /// </summary> /// <param name="fphm&q ...

  7. 用RestTemplate调取接口,取得返回数据,携带header,动态拼接url ,动态参数

    记录我自己的工作 get 请求  ,携带 请求头 header (token) url 根据参数 动态拼接 参数   放入 map  动态拼接 private String lclUrl = &quo ...

  8. 远程带参数POST访问接口,返回数据

    1. string token = GetRequest.GetString("token"); int customer_id = GetRequest.GetInt(" ...

  9. Java封装接口统一返回数据模板

    现在大多数都使用前后端分离开发模式,前端通过Ajax请求访问后台服务器,后台返回JSON数据供前端操作,这里编写一个统一返回数据模板类,方便日后操作 public class R extends Ha ...

  10. carry-检查数据接口返回数据合法性

    问题背景: 在测试&部署监控过程中,我们常常会遇到外部接口返回数据不靠谱的时候.最常见的场合是从某个http获取如json和xml等结构化的结果,进行解析并处理,在这时候出现以下这几种常见类型 ...

随机推荐

  1. 【题目全解】ACGO挑战赛#8

    前言:本次挑战赛的难度相较于前面几期有所提升,主要还是因为集训的关系,出题组的成员们没有充裕的时间想原创题目(so,只能原模原样搬运某一场 ABC 的考试了.)Anyway,AK 了就行. 备注:由于 ...

  2. bacnet mstp设备数据 转IEC61850项目案例

    目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 使用YABE软件读取BACNET MSTP设备信息 2 4 配置网关采集BACNET MSTP数据 4 5 用IEC61850协议转发数据 ...

  3. 论文阅读翻译之Deep reinforcement learning from human preferences

    论文阅读翻译之Deep reinforcement learning from human preferences 关于 首次发表日期:2024-09-11 论文原文链接:https://arxiv. ...

  4. Rounding

    前言 以前写过一篇关于 Rouding 的 decimal, double, float, 但有点杂乱, 这篇做一个整理. Why need rouding? 除法会诞生小数. 甚至会诞生无限小数 ( ...

  5. OxyPlot公共属性一览

    一.PlotModel 1.构造函数中设置的属性 public PlotModel() { this.Axes = new ElementCollection(this); //坐标轴集合; this ...

  6. Avalonia upgrade from 0.10 to 11.x

    Avalonia 从0.10版本升级到11.x版本.由于11.x新版本与旧版本对比发生了破坏性的变化,因此官方给出了升级的攻略可以参考. https://docs.avaloniaui.net/doc ...

  7. Docker基本操作(端口?网络模式?)(五)

    一.端口暴露 Docker 容器更多情况下是用来运行 Web 应用的,所以要如何访问到容器中的 Web 服务呢?比如我们现在运行一个 nginx 容器服务: $ docker run --name w ...

  8. linux内核调试痛点之函数参数抓捕记

    1.linux内核调试工具crash并不能直接显示函数参数,而这个对调试又非常重要 下面是工作中一个实际的问题,我们的进程hang在如下一个内核栈中了,通过栈回溯可知是打开了一个nfs3的网盘文件或者 ...

  9. linux下UsbMon-WireShark之USB协议抓取分析

    usbmon配置 使用usbmon抓包分的,是需要 内核开启CONFIG_USB_MON=m, 重新编译内核, 编译ko : make ARCH=arm64 CROSS_COMPILE=aarch64 ...

  10. Android :安卓学习笔记之 Handler机制 的简单理解和使用

    目录 Handler机制 1.Handler使用的引出 2.背景和定义 3.作用和意义 4.主要参数 5.工作原理及流程 5.1.对应关系 6.深入分析 Handler机制源码 6.1.Handler ...