如何在设置超时时存储数据并在时间结束时检索数据?

时间:2016-09-01 00:28:36

标签: html timeout

如何在设置超时时存储数据并在时间结束时检索数据?

运行程序的步骤: 默认情况下,文本字段包含apple。 然后我点击30 secs按钮。 将文本字段更改为ball。 然后我点击35 secs按钮。 将文本更改为“cat”。 然后我点击45 secs按钮。

function myFunction1() {
      myVar = setTimeout(function() {
        alertFunc(document.getElementById('age').value);
      }, 30000);
    }

    function myFunction2() {
      myVar = setTimeout(function() {
        alertFunc(document.getElementById('age').value);
      }, 35000);
    }

    function myFunction3() {
      myVar = setTimeout(function() {
        alertFunc(document.getElementById('age').value);
      }, 40000);
    }



    function alertFunc(a) {
      alert(a);
    }
    <input type="text" id="age" value="apple">
    <input type="button" id="button2" value="30 secs" onClick=myFunction1()>
    <input type="button" id="button3" value="35 secs" onClick=myFunction2()>
    <input type="button" id="button4" value="40 secs" onClick=myFunction3()>

  

结果:   大约35秒后,第一个警报将显示 cat 。   大约5秒钟后,第二个警报也会显示 cat 。   而且,再过5秒钟,第三个警报也会显示 cat !!!

我认为正在发生的是超时完成后正在记录的参数。

我如何克服这一点?

我有一个想法,就是在设置定时器时,我会将参数值推送到堆栈/数组,然后在定时器完成时弹出它。但是如何在计时器完成时识别它。

不确定如何在此处实施promise-then方法。

请帮忙。

1 个答案:

答案 0 :(得分:1)

如果您希望超时功能在添加时显示值,则应将myFunctionX更改为此 function myFunction2() { var v = document.getElementById('age').value; myVar = setTimeout(function() { alertFunc(v); }, 35000); } 代码的问题是当达到超时时,回调函数从dom读取值,这是执行步骤的最终值。