如何暂停 Javascript 中的事件?
How to pause an event in Javascript?
我从昨天开始尝试使用我的 js 代码,但它仍然不起作用。所以我有一个 select 列表,当我更改 selected 选项时,它会调用一个调用 DWR 函数的 onchange
事件。
问题是 DWR 函数需要一段时间并重置我的 select 选项(第一个元素 selected 而不是 selected),我尝试设置以前的值,但它仅在我添加 while 循环时有效。
var valeurTypeUo = document.getElementById('selectElement').value;
// DWR function called by this function
forme.getOptions(params);
// console.log(document.getElementById('typesUoChoix').value) is empty String
while (document.getElementById('typesUoChoix').value != valeurTypeUo)
document.getElementById('typesUoChoix').value = valeurTypeUo;
这是我的代码,它可以工作,但如果我想停止脚本,总会有一个警告。有什么方法可以替换这个 while 指令吗?
您可以 "pause" 使用 ES6 生成器(yield 关键字)函数,但通常在这种情况下您不需要它。异步调用上的普通回调应该可以做到。
无论如何这里是生成器的 link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*
您可以使用可以清除的 setInterval
而不是 while
。
您的代码可以像这样:
var stopCheking = false;
var checkingInterval; // interval holder
var valeurTypeUo = document.getElementById('selectElement').value;
// DWR function called by this function
forme.getOptions(params);
// console.log(document.getElementById('typesUoChoix').value) is empty String
checkingInterval= setInterval( function() {
if( stopCheking ) clearInterval(checkingInterval);
}, 2);
在这种情况下,如果您想停止事件 (interval
),请将 stopCheking
标志设置为 true
。
我从昨天开始尝试使用我的 js 代码,但它仍然不起作用。所以我有一个 select 列表,当我更改 selected 选项时,它会调用一个调用 DWR 函数的 onchange
事件。
问题是 DWR 函数需要一段时间并重置我的 select 选项(第一个元素 selected 而不是 selected),我尝试设置以前的值,但它仅在我添加 while 循环时有效。
var valeurTypeUo = document.getElementById('selectElement').value;
// DWR function called by this function
forme.getOptions(params);
// console.log(document.getElementById('typesUoChoix').value) is empty String
while (document.getElementById('typesUoChoix').value != valeurTypeUo)
document.getElementById('typesUoChoix').value = valeurTypeUo;
这是我的代码,它可以工作,但如果我想停止脚本,总会有一个警告。有什么方法可以替换这个 while 指令吗?
您可以 "pause" 使用 ES6 生成器(yield 关键字)函数,但通常在这种情况下您不需要它。异步调用上的普通回调应该可以做到。
无论如何这里是生成器的 link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*
您可以使用可以清除的 setInterval
而不是 while
。
您的代码可以像这样:
var stopCheking = false;
var checkingInterval; // interval holder
var valeurTypeUo = document.getElementById('selectElement').value;
// DWR function called by this function
forme.getOptions(params);
// console.log(document.getElementById('typesUoChoix').value) is empty String
checkingInterval= setInterval( function() {
if( stopCheking ) clearInterval(checkingInterval);
}, 2);
在这种情况下,如果您想停止事件 (interval
),请将 stopCheking
标志设置为 true
。