从函数返回后是否可以触发事件?

时间:2019-03-06 00:02:45

标签: javascript async-await dom-events

我正在开发一个JavaScript项目,该项目利用了我不久前写的REST API。我正在使用Axios向API发出get / post / put / 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;
    }
}

我试图在调用delete返回后立即触发CustomEvent。例如,我有一个要运行的函数,但我需要确保它等待直到删除特定资源并已处理响应。因此,我在ApiDELETE事件上有一个事件监听器,该事件将在事件触发时运行。

var theDataWeNeed = await api.delete("resource", data);

document.addEventListener("ApiDELETE", (event) => {
    console.log(theDataWeNeed);
});

问题是我需要等到返回resp.data为止,因为事件处理程序运行的函数依赖于设置为delete函数返回值的变量。

是否可以在delete函数返回后始终触发事件?

P.S。是的,我知道在此特定示例中,我可以完全忘记该事件,并将控制台日志放在await语句之后。但是,我正在寻找一种更可靠的解决方案,使我能够参与这些事件。

0 个答案:

没有答案