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所说,如果没有一些实际的例子,就有点难以准确地理解您想要实现的目标。