首页 > 解决方案 > 如何暂停 addEventListener 半秒?

问题描述

我有这个代码(工作正常):

chiffreId.addEventListener('input', function () {
  fetch(url).then((response) =>
    response.json().then(data => {
      this.value = String(data.montant).replace(/\./, ','), //replace . with , for EU
        soldeId.innerHTML = data.solde;
    })
  );
});

如何暂停fetch代码的执行半秒钟?

标签: javascriptaddeventlistenerfetch-api

解决方案


在超时时调用fetch唯一,并清除超时并在每次事件触发时启动一个新的。

您还可以通过返回Promise来避免一级.then嵌套:.json

let timeoutId;
chiffreId.addEventListener('input', function () {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => {
        fetch(url)
            .then(response => response.json())
            .then(data => {
                this.value = String(data.montant).replace(/\./, ','); //replace . with , for EU
                soldeId.innerHTML = data.solde
            });
    }, 500);
})

推荐阅读