Я работаю над проектом JavaScript, который использует REST API, который я написал некоторое время назад.Я использую Axios для выполнения запросов get / post / put / delete к API.У меня есть асинхронная функция «delete»:
async delete(resource, data) {
try {
var resp = await axios.delete(this.buildUrl(resource), { data });
var event = new CustomEvent('ApiDELETE', {
detail: {
resource_type: resource,
request_params: data,
response: resp.data
}
});
document.dispatchEvent(event);
return resp.data;
} catch(error) {
throw error;
}
}
Я пытаюсь запустить CustomEvent сразу после вызова удаления.Например, у меня есть функция, которую я хочу запустить, но мне нужно убедиться, что она ждет, пока определенный ресурс не будет удален и ответ не будет обработан.Из-за этого у меня есть прослушиватель событий для события ApiDELETE, который будет запускаться при возникновении события.
var theDataWeNeed = await api.delete("resource", data);
document.addEventListener("ApiDELETE", (event) => {
console.log(theDataWeNeed);
});
Проблема в том, что мне нужно подождать, пока не будет возвращено resp.data
, так какФункция, которую запускает обработчик событий, зависит от переменной, которая установлена на значение, возвращаемое функцией delete
.
Можно ли всегда запускать событие ПОСЛЕ возврата функции delete
?
PS Да, я знаю, что в этом конкретном примере я мог бы просто полностью забыть событие и поместить журнал консоли сразу после оператора await.Однако я ищу более надежное решение, которое позволило бы мне подключиться к этим событиям.