我正在学习jQuery,我正在尝试找到一个简单的代码示例,它将针对某个条件轮询API.(即每隔几秒请求一个网页并处理结果)
我熟悉如何在jQuery中使用AJAX,我似乎无法找到让它在"计时器"上执行的"正确"方式.
Joh*_*aig 132
function doPoll(){
$.post('ajax/test.html', function(data) {
alert(data); // process results here
setTimeout(doPoll,5000);
});
}
Run Code Online (Sandbox Code Playgroud)
chr*_*leu 58
这是一篇关于使用jQuery 进行长轮询(长期持有的HTTP请求)的有用文章.源自本文的代码段:
(function poll() {
setTimeout(function() {
$.ajax({
url: "/server/api/function",
type: "GET",
success: function(data) {
console.log("polling");
},
dataType: "json",
complete: poll,
timeout: 2000
})
}, 5000);
})();
Run Code Online (Sandbox Code Playgroud)
这将仅在ajax请求完成后发出下一个请求.
上述内容的变体,将在第一次调用等待/超时间隔之前立即执行.
(function poll() {
$.ajax({
url: "/server/api/function",
type: "GET",
success: function(data) {
console.log("polling");
},
dataType: "json",
complete: setTimeout(function() {poll()}, 5000),
timeout: 2000
})
})();
Run Code Online (Sandbox Code Playgroud)
Boo*_*jaa 13
来自ES6,
var co = require('co');
var $ = require('jQuery');
// because jquery doesn't support Promises/A+ spec
function ajax(opts) {
return new Promise(function(resolve, reject) {
$.extend(opts, {
success: resolve,
error: reject
});
$.ajax(opts);
}
}
var poll = function() {
co(function *() {
return yield ajax({
url: '/my-api',
type: 'json',
method: 'post'
});
}).then(function(response) {
console.log(response);
}).catch(function(err) {
console.log(err);
});
};
setInterval(poll, 5000);
Run Code Online (Sandbox Code Playgroud)
gen*_*sis 11
function poll(){
$("ajax.php", function(data){
//do stuff
});
}
setInterval(function(){ poll(); }, 5000);
Run Code Online (Sandbox Code Playgroud)
function make_call()
{
// do the request
setTimeout(function(){
make_call();
}, 5000);
}
$(document).ready(function() {
make_call();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
113992 次 |
| 最近记录: |