Нужно ли объявлять функцию асинхронной для возврата обещания?
Нет, совсем нет.Фактически, обещания были сделаны задолго до того, как async
заработали.
Ваша оболочка может быть просто:
function fetchGet(url) {
return fetchWrapper(url, 'GET');
}
Вам не нужно async
, если вы не используете await
внутри функции.Вы можете выбрать , чтобы иметь его, чтобы отметить асинхронный характер функции, например, в виде документации в коде (подсказки кода в IDE и т. Д.).Но это не обязательно.
Примечание: у вас проблема с fetchWrapper
. успешно со значением выполнения undefined
, если есть ошибка HTTP.Это означает, что код, использующий его, должен проверить значение выполнения, чтобы увидеть, если оно undefined
, прежде чем его использовать.Я бы порекомендовал делать ошибки HTTP (отклонения):
async function fetchWrapper(url, method) {
const response = await fetch(url, {method: method});
if (!response.ok) {
throw new Error("HTTP error " + response.status);
}
return response;
}