Можно ли запустить событие после возвращения из функции? - PullRequest
0 голосов
/ 06 марта 2019

Я работаю над проектом 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.Однако я ищу более надежное решение, которое позволило бы мне подключиться к этим событиям.

...