promise.race\promise.all\promise.allSettled
需要所有操作都成功才能繼續時,用 Promise.all。
只關心最快出結果的那個操作(比如設置超時),用 Promise.race。
需要知道每個操作的最終狀態(無論成功失敗),比如批量處理任務後生成報告,用 Promise.allSettled。
let params1 = {
dataType: 19, //高頻
deviceId: this.current.vin,
};
let params2 = {
dataType: 20, //低頻
deviceId: this.current.vin,
};
let params3 = {
dataType: 120, //週期數據
deviceId: this.current.vin,
};
let params4 = {
dataType: 122, //事件數據
deviceId: this.current.vin,
};
let p1 = this.findAllUploadTradReq(params1, "highFreData");
let p2 = this.findAllUploadTradReq(params2, "lowFreData");
let p3 = this.findAllUploadTradReq(params3, "cycleData");
let p4 = this.findAllUploadTradReq(params4, "eventData");
Promise.all([p1, p2, p3, p4])
.then((res) => {
let [highFreData, lowFreData, cycleData, eventData] = res;
// console.log(highFreData,lowFreData,cycleData,eventData);
if (highFreData || lowFreData || cycleData || eventData) {
this.tableList[0].lowFreData = "已上傳"; // 燃油車檢測成功
if (
this.current.bleVersion == "2.0" &&
this.current.bleThreeValueStatus === "0"
) {
this.checkingText = "藍牙檢測中...";
// this.disconnect();
this.connect();
return;
}
this.unqualified(2);
return;
} else {
this.tableList[0].highFreData = "未上傳";
this.tableList[0].lowFreData = "未上傳";
this.tableList[0].cycleData = "未上傳";
this.tableList[0].eventData = "未上傳";
let temp = JSON.parse(JSON.stringify(this.tableList[0]));
this.$set(this.tableList, 0, temp);
this.unqualified(1);
this.prolineErrMsg = "燃油車數據檢測未通過!";
}
})
.catch((err) => {
this.unqualified(1);
console.log(err);
});
},