私はJQueryの初心者です。「success」関数を呼び出すときに「pullNotification」関数を再帰的に呼び出したいのですが、ブラウザからリクエストを呼び出すと、スクリプトが「pullNotification」関数と2回呼び出されます。それで、それを解決する方法を教えてください。以下は私のスクリプトです。前もって感謝します。
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);
});
pullNotificationを呼び出すだけですonSuccess
-ありonFailure
ますか?あなたがした場合、それはより簡単であるかもしれません(そして推論するのがより簡単です)
window.setTimeout(function() {
window.setInterval(function() {
pullNotification();
}, 1000);
}, 5000);
その後、setTimeout
から削除しましたsuccess(result) { ... }
そうすればpullNotification
、何が起こっているかに関係なく、1秒に1回電話をかけることになります。ただし、リクエストに1秒以上かかる場合は、サーバーにpingを送信し続ける可能性があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加