我是JQuery的新手。我想在调用'success'函数时递归调用'pullNotification'函数作为长轮询,但是当我从浏览器调用请求时,我的脚本被称为'pullNotification'函数两次。所以请指导我如何解决它。以下是我的脚本。提前致谢。
jQuery(function($) {
var data = [];
function pullNotification() {
var params = {};
new RPC.Call({
'method': 'users.getJsonUsers',
'params': params,
'onSuccess': success
});
};
function success(result) {
if (data.length != 0)
{
for (var i = 0, item; item = result[i]; i++) {
for (var k = 0; k < data.length; k++)
{
if (item.userid == data[k])
{
this.found = true;
break;
}
}
if (this.found)
{
this.data.push(item.userid);
$('<tr origclass="even_row" class="even_row">\n\\n\
<td>' + item.userid + '</td>\n\
<td>' + item.alias + '</td>\n\
<td>' + item.surname + '</td>\n\
</tr>').insertAfter('.nilar');
}
this.found = false;
}
}
else {
for (var j = 0; j < result.length; j++)
{
data.push(result[j].userid);
}
}
setTimeout(function() {
pullNotification();
}, 1000);
}
window.setTimeout(function() {
pullNotification();
}, 5000);
});
答案 0 :(得分:2)
您只能调用pullNotification onSuccess
- 是否有onFailure
?如果你做了
window.setTimeout(function() {
window.setInterval(function() {
pullNotification();
}, 1000);
}, 5000);
然后从setTimeout
success(result) { ... }
这样,无论发生什么事,您都会每秒致电pullNotification
一次。如果请求的时间超过1秒,它确实有可能继续ping你的服务器。