我有一个网站进行ajax调用,然后加载一个gif以在电视上显示静态。但是现在ajax调用没有足够的时间让效果真正流行起来。所以我想知道是否有办法设置ajax调用的最短时间?
你可以看到the website我想要更好地了解我在做什么。尝试单击右侧相框或桌面上的留声机。
<script type="text/javascript">
var minDelay = 1000;
var start = new Date();
$.get("form.html", function(result) {
callback($(result).find("#contact"));
var end = new Date();
var timeInMilliseconds = end - start;
if (timeInMilliseconds < minDelay) {
setTimeout(function() { callback(result); }, minDelay - timeInMilliseconds );
}
else callback(result);
});
$.get("music.html", function(result) {
callback($(result).find("#music"));
var end = new Date();
var timeInMilliseconds = end - start;
if (timeInMilliseconds < minDelay) {
setTimeout(function() { callback(result); }, minDelay - timeInMilliseconds );
}
else callback(result);
});
function callback(result) {
$("#screen").html(result);
}
</script>
答案 0 :(得分:6)
您可以计算起点和终点,然后在低于某个阈值时添加另一个延迟(使用setTimeout
)。像这样:
var minDelay = 1000;
var start = new Date();
$.get(url, function(result) {
var end = new Date();
var timeInMilliseconds = end - start;
if (timeInMilliseconds < minDelay) {
setTimeout(function() { callback(result); }, minDelay - timeInMilliseconds });
}
else callback(result);
});
function callback(result) {
// Ajax response handling here ...
}
编辑我不确定您是否可以使用JQuery load
实现此目的(根据docs,目标会在收到服务器响应后立即更新) 。我建议将load
来电转换为gets
。即,这个:
$("#screen").load("form.html #contact");
应该成为这个:
$.get("form.html", function(result) {
callback($(result).find("#contact"));
});
然后我在上面编写的callback
函数应填充load
的目标。
function callback(html) {
$("#screen").html(html);
}
答案 1 :(得分:1)
您可以在ajax回调方法中使用setTimeout()
方法来模拟延迟吗?
非常酷的网站顺便说一句!
示例代码:
var minDelay = 500;//half a second
setTimeout(DelayTimePassed, minDelay);
//make Ajax Call
function DelayTimePassed()
{
if(dataAvailable)
//show Data
else
//show data as soon as available
}
function AjaxCallback()
{
if(showDataAsSoonAsAvailable)
//Show Data Now
else
dataAvailable=true;//show data after time delay passes
}
希望这对您有意义 - 两种方法检查几个全局bool变量以决定何时显示数据。