Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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 - Fatal编程技术网

Javascript同步事件问题

Javascript同步事件问题,javascript,jquery,Javascript,Jquery,对于一系列需要定时运行的任务,我有一个奇怪的问题 if(str==“venuehours”){ WeekCommenting=$(“#WeekCommenting”).val(); venueId=$('#venueId').val(); 如果(周交流!=''){ setTimeout(函数(){ $(“#结果小时”).addClass('show'); }, 2000); setTimeout(函数(){ $('#loaderModal').model('hide'); }, 2200); $

对于一系列需要定时运行的任务,我有一个奇怪的问题

if(str==“venuehours”){
WeekCommenting=$(“#WeekCommenting”).val();
venueId=$('#venueId').val();
如果(周交流!=''){
setTimeout(函数(){
$(“#结果小时”).addClass('show');
}, 2000);
setTimeout(函数(){
$('#loaderModal').model('hide');
}, 2200);
$(“#结果内容”).load(“/reportbuilder/VenueHours”{
周交流:周交流,
维努艾德:维努艾德
});
setTimeout(函数(){
$('html,body')。设置动画({
scrollTop:$(“#结果小时”).offset().top
},500,'线性';
}, 2300);
}否则{
setTimeout(函数(){
$('#loaderModal').model('hide');
}, 2200);
$('.rota build frm er.error msg').html('*请选择周开始日期!');
}
}
在我们的开发服务器上,由于数据花费的时间似乎超过了
setTimeout
函数所允许的时间,因此序列无法正常工作,因此上述情况就发生了

这段代码作为原型构建的一部分很快就组合起来了,我们知道它需要重构以使其持久。我们知道我们需要重新构造此代码,以允许
load
功能成为同步任务的中心-并将实现承诺视为解决方案-但不确定在下面的场景中我们将如何实现


有谁能给我们一个建议,让我们走上正确的道路吗?谢谢你的帮助

如果我正确理解了您的问题,您需要按顺序执行一系列操作,但这些操作的顺序不正确

考虑通过承诺链使用和链接操作。请注意,我已经更改了超时值,因为它们现在只在上一个操作完成后执行

if (str === "venuehours") {
  weekCommencing = $('#weekCommencing').val();
  venueId = $('#venueId').val();

  if (weekCommencing !== '') {
    var action = new Promise(function(resolve, reject) {
      setTimeout(function() {
        $('#results-vhhours').addClass('show');
        resolve();
      }, 2000);
    });
    action.then(function() {
      return new Promise(function(resolve, reject) {
        setTimeout(function() {
          $('#loaderModal').modal('hide');
          resolve();
        }, 200);
      });
    }).then(function() {
      return new Promise(function(resolve, reject) {
        $("#results-content").load("/reportbuilder/VenueHours", {
          weekCommencing: weekCommencing,
          venueId: venueId
        }, function() {
          resolve();
        });
      });
    }).then(function() {
      setTimeout(function() {
        $('html, body').animate({
          scrollTop: $('#results-vhhours').offset().top
        }, 500, 'linear');
      }, 100);
    });
 } else {
    setTimeout(function() {
      $('#loaderModal').modal('hide');
    }, 2200);

    $('.rota-build-frm-er.error-msg').html('* Please select Week Commencing Date!');
  }
}

如果看不到问题的实际工作示例(或者至少是相关的HTML和CSS,这样我们就可以自己创建一个),我们就无法真正重新创建问题来解决它。这就是说,我的假设是,只有当调用完成时,您才需要使用
load()
的回调来运行您的逻辑——尽管我们仍然遇到同样的问题——不确定为什么——真正令人头痛!到底发生了什么?你想发生什么?正如Rory所说,如果没有一些实际的例子,就有点难以准确地理解您想要实现的目标。