我有一个通知区域,当有人发送消息时,例如使用jQuery或Ajax(我的数据库在肥皂服务器中)我想要更新通知区域我想每隔一秒左右进行一次soap调用,我该怎么办?是什么?
答案 0 :(得分:3)
您可以使用简单的setInterval
结构以预定义的间隔执行AJAX调用。像这样:
setInterval(function(){
$.get('ajax_responder.php',dataObj,function(){
// ajax callback
// here is where you would update the user with any new notifications.
});
},5000);
前面的代码将每5000毫秒(每5秒)执行一次AJAX请求。
参考文献:
答案 1 :(得分:3)
我强烈建议使用setInterval()
而不是setTimeout()
。
如果您的逻辑可能需要更长时间才能执行 比间隔时间,建议你递归调用一个 使用
window.setTimeout
命名的函数。例如,如果使用 setInterval每隔5秒轮询一次远程服务器,网络延迟, 一个没有响应的服务器,以及许多其他问题可能会阻止 要求在分配时间内完成。因此,你可能会发现 你自己排队的XHR请求不一定会返回 顺序。对于这种情况,首选递归
setTimeout
模式:(function loop(){ setTimeout(function(){ // logic here // recurse loop(); }, 1000); })();
在上面的代码片段中,声明了一个命名的函数循环并立即执行。 递归调用
loop
逻辑完成执行后在setTimeout
内。虽然这个 模式不保证在固定的时间间隔内执行,确实如此 保证在递归之前完成前一个间隔。
答案 2 :(得分:1)
实时网络的最佳方式是node.js。
Node.js是一个基于Chrome JavaScript运行时的平台,可轻松构建快速,可扩展的网络应用程序。 Node.js使用事件驱动的非阻塞I / O模型,使其轻量级和高效,非常适合在分布式设备上运行的数据密集型实时应用程序。
但您可以setInterval or setTimeout执行此操作,在您的间隔内进行Ajax来电。
var intval = setInterval( function()
{
$.get('url.php', {data1: "value1", data2: "value2"},
function(response)
{
// response
});
}, 1000);