我正在开发一个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语句之后。但是,我正在寻找一种更可靠的解决方案,使我能够参与这些事件。