以前、次のjQuery Ajaxリクエストを使用して、サーバーから3秒ごとにAjaxポーリングを使用する質問について質問しました。
function getData() {
$.ajax({
url : 'http://example.com',
type: 'GET',
success : function(data) {
// process data here
setTimeout(getData, 3000);
},
dataType : 'json'
});
}
これを行う別の方法は、setTimeoutを$ .ajax()ブロックの外に置くことのようです。
function getData() {
setTimeout( function() {
$.ajax({
url : 'http://example.com',
type: 'GET',
success : function(data) {
//process data here
},
dataType : 'json'
}) }, 3000);
}
では、これら2つの方法に違いはありますか?3秒ごとにサーバーを継続的にポーリングするのと同じ効果がありますか?
また、成功コールバック関数内で、特定の条件が満たされた場合、たとえばdata.length> 1000の場合、この無限ポーリングを終了するにはどうすればよいですか。このループを終了して別の関数を呼び出しますか?私はこのようなことをする必要があります:
function getData() {
var tID = setTimeout( function() {
$.ajax({
url : 'http://example.com',
type: 'GET',
success : function(data) {
//process data here
if(data.length > 1000) {
funcOutside();
clearTimeout(tID);
}
},
dataType : 'json'
}) }, 3000);
}