gpt4 book ai didi

javascript - 如何 try catch 异步函数

转载 作者:行者123 更新时间:2023-11-28 14:45:15 25 4
gpt4 key购买 nike

我有一个使用 axios 发出网络请求的函数:

async loadAvailableDates(startDate, endDate, bounds) {
const polygon = this.getDatePolygon(bounds);
let indexUrl = `${this.baseUrl}index/v2/search`;
var url = `${indexUrl}?timefrom=${startDate}&timeto=${endDate}T23:59:59&&maxcount=31`;
const res = await this.httpClient.post(url, polygon);
const availableDates = [];
res.data.tiles.map(tile => {
availableDates.push({
date: tile.sensingTime.split("T")[0],
cloudCoverage: tile.cloudCoverPercentage
});
});
return availableDates;
}

然后我在另一个代码块中调用这个函数:

const dates = await this.props.uiStore
.loadAvailableDates(endDate, startDate, managedParcel.bounds)

现在我想在网络请求失败的情况下对此函数实现错误处理(我想返回一个空数组而不是错误)。

我尝试这样做:

const dates = await this.props.uiStore
.loadAvailableDates(endDate, startDate, managedParcel.bounds)
.catch(e => return [])

但是它不起作用。

我是否需要将网络请求包装在 try/catch block 的 loadAvailableDates 函数中,或者有没有办法在函数调用中执行此操作?

最佳答案

您可以使用普通的 try-catch block 或 Promise 功能 .catch()

Here's a writeup on it

let dates = [];
try {
dates = await this.props.uiStore
.loadAvailableDates(endDate, startDate, managedParcel.bounds)
} catch (e) {
dates = [];
}
return dates;

--编辑

也试试这个:

async loadAvailableDates(startDate, endDate, bounds) {
try {
const polygon = this.getDatePolygon(bounds);
let indexUrl = `${this.baseUrl}index/v2/search`;
var url = `${indexUrl}?timefrom=${startDate}&timeto=${endDate}T23:59:59&&maxcount=31`;
const res = await this.httpClient.post(url, polygon);
const availableDates = [];
res.data.tiles.map(tile => {
availableDates.push({
date: tile.sensingTime.split("T")[0],
cloudCoverage: tile.cloudCoverPercentage
});
});
return availableDates;
} catch (e) {
return [];
}
}

关于javascript - 如何 try catch 异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46601041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com