Основная проблема:
Основная проблема, с которой вы сталкиваетесь, заключается в том, что в вашей главной функции deleteLeaveType
вы заканчиваете return getData(response)
, а не просто возвращаете то, что получили от вашего fetch
request.
Как вы можете видеть из документов , обычный способ использования fetch
- это просто сделать const response = await fetch(...)
(как вы уже сделали), а затем сразу послевызов data.json()
(кстати, еще одна асинхронная функция). Однако ваша getData(response)
функция, вероятно, не возвращает именно то, что вы ожидаете.
Другие комментарии:
Как уже упоминалось в комментариях, вам, вероятно, не следует использовать async
/ await
одновременно с .then()
. Это два разных способа обработки асинхронных функций, поэтому за один раз следует использовать только один.
В вашей deleteLeaveType
функции, если вы предпочитаете использовать .then
для обработки асинхронных функций, вы можете избавиться или async
и await
вот так:
// remove 'async' from function declaration
const deleteLeaveType = id => {
// keep original code
// remove 'await'
CalendarManagementAPI.deleteLeaveType(id)
.then(data => {
// ... everything else the same
};
ИЛИ для правильного использования async
/ await
, как вы использовали в первом deleteLeaveType
в своем вопросе, сделайте это:
const deleteLeaveType = async id => {
let deleteLeaveType = isLeaveType.filter(
item => item.id !== id
);
let data = await CalendarManagementAPI.deleteLeaveType(id);
// ... the rest of your code
};
Вот интересная статья, объясняющая некоторые идеи для обработки ошибок с async
/ await
, если вам интересно: Лучшая обработка ошибок с помощью async / await
Я бы также рекомендовал не использовать одно и то же имя переменной deleteLeaveType
для двух функций и массива. Это может немного запутать то, на что вы ссылаетесь в данный момент времени.