Javascript 如何在脱机模式下对ajax请求进行排队,并在使用offline.js连接到internet时自动执行?
请用一个ajax示例进行解释。 这是我当前的代码Javascript 如何在脱机模式下对ajax请求进行排队,并在使用offline.js连接到internet时自动执行?,javascript,jquery,ajax,get,offline,Javascript,Jquery,Ajax,Get,Offline,请用一个ajax示例进行解释。 这是我当前的代码 <div id="status">Status is:</div> <button onclick="getData()">Get Data</button> <script> // Set our options for the Offline detection library Offline.options = { checkOn
<div id="status">Status is:</div>
<button onclick="getData()">Get Data</button>
<script>
// Set our options for the Offline detection library
Offline.options = {
checkOnLoad: true,
checks: {
image: {
url: function() {
return 'http://esri.github.io/offline-editor-js/tiny-image.png?
}
},
active: 'image'
},
requests : true
}
Offline.on('up', internetUp);
Offline.on('down',internetDown);
var statusDiv = document.getElementById("status");
statusDiv.innerHTML = "Status is: " + Offline.state;
function getData() {
// See if internet is up or down
Offline.check();
// If the internet is up go ahead and retrieve data.
$.ajax({url:"http://rest-service.guides.spring.io/greeting", success: function(result){
debugger
alert(JSON.stringify(result));
}});
}
function internetUp(){
console.log("Internet is up.");
statusDiv.innerHTML = "Status is: up";
}
function internetDown(){
console.log("Internet is down.");
statusDiv.innerHTML = "Status is: down";
}
</script>
状态为:
获取数据
//设置脱机检测库的选项
脱机。选项={
checkOnLoad:true,
检查:{
图片:{
url:function(){
返回'http://esri.github.io/offline-editor-js/tiny-image.png?
}
},
活动:“图像”
},
请求:正确
}
离线。开启(“启动”,互联网启动);
离线。打开(“关闭”,互联网关闭);
var statusDiv=document.getElementById(“状态”);
statusDiv.innerHTML=“状态为:”+Offline.state;
函数getData(){
//看看互联网是上是下
Offline.check();
//如果互联网已开通,请继续检索数据。
$.ajax({url:http://rest-service.guides.spring.io/greeting,成功:函数(结果){
调试器
警报(JSON.stringify(result));
}});
}
函数internetUp(){
log(“Internet已启动”);
statusDiv.innerHTML=“状态为:向上”;
}
函数internetDown(){
log(“Internet已关闭”);
statusDiv.innerHTML=“状态为:向下”;
}
我想在调用过程中以脱机模式对ajax请求调用进行排队,并想在连接到internet时自动执行I是在internet启动时触发internetUp
功能的事件。然后你可以做一些类似的事情:
function internetUp(){
console.log("Internet is up.");
statusDiv.innerHTML = "Status is: up";
var requests = ['example.com','example2.com','whatever.com'];
for(let i =0;i<requests.length;i++){
$.ajax({
url: requests[i]
}).done(function(data) {
console.log(data);//here callback of each request
});
}
}
function internetUp(){
log(“Internet已启动”);
statusDiv.innerHTML=“状态为:向上”;
var requests=['example.com','example2.com','whatever.com'];
对于(设i=0;iIt非常简单。与其发送请求,不如将请求参数放入数组中。一旦联机,从数组的开头一个接一个地获取项目,并从中构造请求。但是,通常不再需要延迟请求的结果。因此,发送新请求可能是一个更合理的解决方案,一旦您联机,就不必担心队列,因为队列中不存在对请求用途的了解。