如何在javascript中暂停事件?
我从昨天就开始尝试使用我的js代码,但它仍然不起作用。因此,我有一个选择列表,当我更改所选选项时,它将调用一个onchange事件,该事件将调用DWR函数 问题是DWR函数需要一段时间并重置我的选择选项(选择的第一个元素而不是选择的元素),我尝试设置上一个值,但它仅在添加while循环时起作用如何在javascript中暂停事件?,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我从昨天就开始尝试使用我的js代码,但它仍然不起作用。因此,我有一个选择列表,当我更改所选选项时,它将调用一个onchange事件,该事件将调用DWR函数 问题是DWR函数需要一段时间并重置我的选择选项(选择的第一个元素而不是选择的元素),我尝试设置上一个值,但它仅在添加while循环时起作用 var valeurTypeUo = document.getElementById('selectElement').value; // DWR function called by this func
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指令
提前谢谢。您可以使用ES6生成器(yield关键字)来“暂停”函数,但在这种情况下通常不需要它。异步调用上的普通回调应该可以做到这一点
无论如何,这里是生成器的链接:您可以使用
setInterval
,您可以在时清除它,而不是
您的代码可以是:
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
,这可能会有所帮助:是否可以显示forme.getOptions(params)
函数?DWR是否有可以传播的回调?您可以延迟代码块的执行,但延迟之前相同级别的其他代码仍将执行——这是因为据我所知,setTimeout
不是异步的。@reporter它向我显示了这个错误>SyntaxError:missing;在声明之前,我在声明中也做了同样的事情example@DavinTryon这里没有回调,而是像Collections.sort(DWR的代码是由超过一百行组成的)那样需要时间执行的指令。