Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中暂停事件?_Javascript_Jquery_Javascript Events - Fatal编程技术网

如何在javascript中暂停事件?

如何在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

我从昨天就开始尝试使用我的js代码,但它仍然不起作用。因此,我有一个选择列表,当我更改所选选项时,它将调用一个onchange事件,该事件将调用DWR函数

问题是DWR函数需要一段时间并重置我的选择选项(选择的第一个元素而不是选择的元素),我尝试设置上一个值,但它仅在添加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指令

提前谢谢。

您可以使用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的代码是由超过一百行组成的)那样需要时间执行的指令。