У меня есть приложение React. В этом приложении реакции у меня есть определенные события нажатия кнопки, которые запускаются непосредственно перед изменением страницы (событие аналитики)
sendEvent('xyz')
let win = window.open(`${PAGE_PATHS.dashboard}`, "_self");
if (win !== null) {
win.focus();
}
Где событие
async event(name, data) {
await this.sendEvent(name, data)
}
Где sendEvent () равно
async sendEvent(name, data) {
// some code
axios.post(url, payload, userConfig)
return
}
Теперь из-за текущей структуры события иногда не регистрируются. Есть две вещи, которые я мог бы сделать здесь.
- Используйте
await
, но я не хочу этого делать, потому что отправка события и получение ответа могут занять некоторое время (пользовательский опыт), и мне наплевать на ответ - Используйте setTimeout.
Почему-то мне не нравится ни один из подходов. Есть ли способ, я могу иметь задачу для выполнения (если она не завершена), даже после того, как веб-страница изменилась, это href? может быть, с помощью службы или веб-работника