如何在设置超时时存储数据并在时间结束时检索数据?
运行程序的步骤:
默认情况下,文本字段包含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
方法。
请帮忙。
答案 0 :(得分:1)
如果您希望超时功能在添加时显示值,则应将myFunctionX更改为此
function myFunction2() {
var v = document.getElementById('age').value;
myVar = setTimeout(function() {
alertFunc(v);
}, 35000);
}
代码的问题是当达到超时时,回调函数从dom读取值,这是执行步骤的最终值。