我坚持这些。我想创建一个每4秒运行一次的函数。现在我的函数将从我的数据库中获取所有的queue_id并一次又一次地将它存储在数组中,在存储之后,我会每4秒一次又一次地比较它,如果有变化,那么我会做点什么。
执行示例:如果我的数据库响应带有queue_id' s:1,2,3,4,5那么我将从数组中存储这些数据。存储后,我将再次查询evry 4秒,如果它返回1,2,4,5或1,2,3,5我将做一些事情,但如果它返回像1,2,3,4,5那样的话我不会做点什么。
我不知道如何在javascript中存储或创建数组。请帮帮我:
argv[1]
答案 0 :(得分:0)
使用push,并在ajax请求之外声明该数组。现在一切正常
function check_getqueue(clinicID, userID) {
var tmpCountQ = [];
var lastCon = [];
$.ajax({
url: siteurl+"sec_myclinic/checkingUpdates/"+clinicID+"/"+userID,
type: "POST",
dataType: "JSON",
success: function(data) {
for(var i=0;i<data.length;i++) {
tmpCountQ.push(data[i]['queue_id']);
};
if(typeof lastCon[0] != "undefined")
{
for(j=0;j < tmpCountQ.length;j++)
{
if(tmpCountQ[j] != lastCon[j])
{
lastCon[j] = tmpCountQ[j];
}
}
}
else
{
lastCon = tmpCountQ;
}
console.log(tmpCountQ);
}
});
}
答案 1 :(得分:0)
您需要跟踪最后收到的一组ID,并将它们与新的ID进行比较。找到差异后,调用doSomething()并更新下次运行的记录。
为了加快速度,您可以先检查长度。以下评论栏中的更多信息。
var previousQueueIDs = [];
function doSomething() {
// do something
// ...
// set timer for the next run
setTimeout(check_getqueue, 4000);
}
function check_getqueue(clinicID, userID) {
$.ajax({
url: siteurl+"sec_myclinic/checkingUpdates/"+clinicID+"/"+userID,
type: "POST",
dataType: "JSON",
success: function(data) {
var queueIDs = [];
if(previousQueueIDs.length != data.length) {
previousQueueIDs = queueIDs;
return doSomething();
}
// length didn't change, so check further
// create new array for the current values
for(var i=0;i<data.length;i++) {
queueIDs.push(+data[i]['queue_id']);
};
// sort them for faster comparison
queueIDs.sort( function(a,b) {
return a-b;
});
// check one by one and exit to run doSomething
// as soon as the first difference found
for(var i=0; i<queueIDs.length; i++) {
if(queueIDs[i] != previousQueueIDs[i]) {
previousQueueIDs = queueIDs;
return doSOmething();
}
}
// no difference this time, just set timer for the next run
setTimeout(check_getqueue, 4000);
}
});
}