Javascript 如何在队列中存储ajax值

Javascript 如何在队列中存储ajax值,javascript,ajax,jquery,Javascript,Ajax,Jquery,我希望使用jQuery.ajax()显示来自数据库的一些数据(即每个数据都包含一个标题和一个描述),并且我希望这个过程定期进行,比如setInterval(func,5000) 现在我真正需要的是一个js容器(一个数组,一个变量,随便什么),我可以在其中存储这些项目,并使用另一个函数,我希望它们每2秒显示一次 因此,换言之: 如果你愿意,我们必须有两个函数和一个容器。ajax函数每5秒启动一次,并将其数据(如果有)附加到容器(队列)中 另一方面,第二个函数每2秒显示一次容器的内容,并从容器中删

我希望使用jQuery.ajax()显示来自数据库的一些数据(即每个数据都包含一个标题和一个描述),并且我希望这个过程定期进行,比如setInterval(func,5000)

现在我真正需要的是一个js容器(一个数组,一个变量,随便什么),我可以在其中存储这些项目,并使用另一个函数,我希望它们每2秒显示一次

因此,换言之:

  • 如果你愿意,我们必须有两个函数和一个容器。ajax函数每5秒启动一次,并将其数据(如果有)附加到容器(队列)中
  • 另一方面,第二个函数每2秒显示一次容器的内容,并从容器中删除显示的项目

如何实现这一点?

为什么不使用数组呢。它可以存储字符串、对象

看看这个很棒的博客


如果您需要排队,这可能会帮助您

首先,设置如下容器:

var queue = [];

function ajaxCall() {
  $.when($.ajax(...)).done(function(data) {
     ///assuming your data json's outermost structure is an array
     while(data[0]) {
        queue.push(data.shift());
     }
  })
}

function publisher() {
   var item = queue.shift();
   if(item) {
      //do your gubbins here
   }
}

setInterval(ajaxCall,5000);

setInterval(publisher, 2000);
<div id="container">
 <ul>
 </ul>
</div>

然后,在.js中:

//step 1. define global Array to hold the values
$(document).ready(function(){
  var items = new Array();

  //step 3. call the ajax every 5 second
  var updateInterval = setInterval(function() {
    get_the_data();
  //don't forget to empty the array
        items = [];

   }, 5000);

  //step 4. so now, with the data got refresh every 5 second, you just have to append this data into container every 2 second. use the .html method
 //logically, in first two times invoke to this method (4 seconds) the container would get same data from array, but in third invocation (at 6 seconds) the container get the fresh one, and so on...
  var insertToContainer = setInterval(function() {
    for(i=0;i<items.length;i++){
      $('#container ul').html('<li>' + items[i] + '</li>')                  
   }                
    }, 2000);

});

//step 2. set up your ajax call
function get_the_data()
{
  $.ajax({
     //set your ajax code here...
     success:function(data){
        //on success put the data into the global array
        for(i=0;i<data.length;i++){
             items.push(data[i]);
        }
     }
  });
}
//第1步。定义全局数组以保存值
$(文档).ready(函数(){
var items=新数组();
//步骤3.每5秒钟调用一次ajax
var updateInterval=setInterval(函数(){
获取_数据();
//不要忘记清空数组
项目=[];
}, 5000);
//步骤4.现在,数据每5秒刷新一次,您只需每隔2秒将此数据附加到容器中。使用.html方法
//从逻辑上讲,在前两次调用此方法(4秒)时,容器将从数组中获取相同的数据,但在第三次调用(6秒)时,容器将获取新的数据,以此类推。。。
var insertToContainer=setInterval(函数(){

对于(i=0;iSo)您想知道如何存储来自AJAX请求的变量吗?听起来您想要一个类似队列的东西。到目前为止,您尝试了什么?不仅仅是一个值,它必须在js中的某个地方可用,我想一个接一个地显示它们(每x秒一次)——不管什么东西通过ajax@FelixKling:是的。我尝试使用数组来执行此操作,但我做不到,因为每次调用时都必须传递一些帮助程序值。我想知道最佳做法是什么,最好是举个例子。这些帮助程序值是什么?不将数据附加为第一个函数一收到它?你的回答让我在jQuery中查找延迟对象。谢谢!是的,在这个例子中它们不是绝对必要的,但我正在努力养成一直使用新语法的习惯,因为有时它非常有用。谢谢,你一箭双雕;)谢谢你,基于你简单透彻的解释,我可以解决整个问题。我很感激我真的用了那篇关于js关联数组的文章,谢谢