我有一个转换的网页,在点击一切都将opacity:0
(持续1秒),然后一个新的页面被换入,一切都将opacity:1
(持续1秒)有没有办法在确切时间履行承诺?
它最终看起来怪异,如果页面没有精确的1秒钟来隐藏并显示。此外,如果该页面没有在两者之间立即交换,它看起来很有价值。
这是我的第一个代码
$('#main').css('opacity', '0');
setTimeout(function(){
$('#main').load('/views/'+name+'.html').css('opacity', '1')
}, 1000);
但是负载()有时需要太长抢视图,并且由于CSS是立即执行的透明度已经1
当它交换。
所以我想这:
$.get('/views/'+name+'.html', function(page){
setTimout(function(){
$('#main').html(page).css('opacity', '1')
},1000);
})
但现在如果$获得()是缓慢的,页面是空白时间过长。 理想情况下,我想知道承诺花了多长时间完成,并从setTimeout时间中减去。 我现在在想,我必须手动创建一个新的日期对象,并检查承诺履行后的差异。
有没有更好的解决方案?
这不是OP所要求的,'async:false'通常不好。 – Ozan
通常我不会做异步错误,但在他的情况下它是有道理的,并且比依赖基于时间的东西更一致。这不像他阻止任何点击的东西,因为他正在替换整个页面的内容。 –
他不希望动画在ajax之后运行,他已经可以轻松地做到这一点。这对任何情况都没有帮助。 – Ozan