Проблема, с которой вы столкнулись, связана с несколькими вещами. Событие, к которому вы изначально привязаны, - DomContentLoaded. Это событие вызывается после загрузки всего содержимого DOM (HTML Text), оно не ожидает завершения загрузки скриптов или таблиц стилей перед запуском. В этом случае вы захотите использовать событие «Загрузить».
document.addEventListener("load", function() {
actionTest();
});
Это даст вам немедленный первый консольный журнал, когда все скрипты успешно завершат загрузку и будут проанализированы браузером.
Следующая проблема связана с размещением обработчика нажатия кнопки. Каждый раз, когда вы вызываете actiontest (), вы добавляете к кнопке другой, другой обработчик событий.
Вместо этого, возможно, попробуйте что-то вроде этого ...
document.addEventListener("load", function() {
/* Delegate the event to be captured by the document
this will ensure that dynamic buttons are captured without
having to explicitly assign an event handler to each button
when it is added to the dom, instead the event will bubble up to the
document to be handled.
*/
document.addEventListener("click", (evt) => {
if(evt.target.matches('.test-btn')){
actionTest();
}
}, false);
// execute initial call
actionTest();
})
export function actionTest() {
const res = fetchData();
if (res) {
console.log(res);
}
}
Это должно показать только один console.log
сначала, а затем один console.log
для каждого последующего нажатия на кнопку.
Надеюсь, это поможет!