目前有一个需求,调用多个接口(异步),等所有接口运行完之后,用echart统一绘制数据。但是众所周知,接口是异步的,所以不知道什么时候所有的接口才能执行完。这个时候promise就发挥了作用。下面上代码
//需要调用的函数 会调用多次
getPatientliftInfo(obj, count, itemName) {
let promise = new Promise((resolve, reject) => {
var parameter = {
patientId: obj.patientId,
count: count,
itemName: itemName,
};
outerAxios(urlGetPatientlife, parameter) //这里请对号入座写你的方法
.then((res) => {
if (res.data.length != 0) {
resolve("一些数据"); // 调用resolve函数 (由进行转变到成功状态)
} else {
resolve("一些数据"); // 调用resolve函数 (由进行转变到成功状态)
}
})
.catch((err) => {
// reject("错误"); // 调用rejected函数(由进行转变到失败状态)
});
});
return promise;
},
//在这里调用这些函数
Promise.all([
this.getPatientliftInfo(obj, 120, "心率"), //获取病人的生命体征的接口
this.getPatientliftInfo(obj, 120, "平均动脉压"), //获取病人的生命体征的接口
this.getPatientliftInfo(obj, 120, "收缩压"), //获取病人的生命体征的接口
this.getPatientliftInfo(obj, 120, "ETCO2"), //获取病人的生命体征的接口
this.getPatientliftInfo(obj, 120, "SpO2"), //获取病人的生命体征的接口
this.getPatientliftInfo(obj, 120, "呼吸"), //获取病人的生命体征的接口
]).then((result) => {
console.log(result);
this.$refs.inOperationRisky.updateEchart();
});
如上图所示,采用Promise.all方法,参数为一个promise对象列表。如此操作,就可以等所有异步接口执行完之后,再调用需要执行的方法。非常的方便。