在 javascript 代码之前触发 Ajax 调用
Trigger Ajax calls before javascript code
在我当前的代码中,我用 ajax 调用填充对象 arr。通话结束后,我想对它们进行分类。我填充 arr 的代码工作正常,但代码的顺序不是我想要的。
在调试模式下,我看到他首先尝试对空的 Arr 进行排序,然后 ajax 调用是 运行ning。
有没有办法先 运行 整个 Ajax 脚本然后填充 运行 排序部分?
代码:
//Sortering
var arr = {};
var key = "";
var teller = 0;
for (var i = 0; i < schedule_id.length; i++) {
//Ajax call maken
$.ajax({
url: "http://api.viewer.zmags.com/schedules/" + schedule_id[i] + "?key=" + api_key
})
.done(function(data) {
//Check publicatieID is not null
if (undefined === data.scheduleEntries[default_pub] || null === data.scheduleEntries[default_pub]) {} else {
var key = schedule_id[teller];
//loopen doorheen resultaat call
$.each(data.scheduleEntries, function(index, entry) {
arr[key] = entry.startDate;
})
}
teller++;
})
}
//////////////////////////////////////////////////////////////////////////
//I want this part after the arr is filled
var timeArray = [],
newObj = {};
for (var key in arr) {
timeArray.push([key, arr[key]]);
}
timeArray.sort(function(a, b) {
return new Date(a[1]) - new Date(b[1])
});
//console.log(timeArray);
var j = 0,
k = 1;
for (var i = 0; i < timeArray.length; i++) {
newObj[timeArray[i][j]] = new Date(timeArray[i][k]);
}
将异步设置为 false
$.ajax({
url: "http://api.viewer.zmags.com/schedules/" + schedule_id[i] + "?key=" + api_key,
异步:假
})
将您的代码移至 done 函数
无法向主线程添加评论,根据您的评论,您似乎遇到了一些同步问题,所以我建议您花一些时间在 this (jquery deferred object) 上,我想这可能是您问题的解决方案
在我当前的代码中,我用 ajax 调用填充对象 arr。通话结束后,我想对它们进行分类。我填充 arr 的代码工作正常,但代码的顺序不是我想要的。
在调试模式下,我看到他首先尝试对空的 Arr 进行排序,然后 ajax 调用是 运行ning。
有没有办法先 运行 整个 Ajax 脚本然后填充 运行 排序部分?
代码:
//Sortering
var arr = {};
var key = "";
var teller = 0;
for (var i = 0; i < schedule_id.length; i++) {
//Ajax call maken
$.ajax({
url: "http://api.viewer.zmags.com/schedules/" + schedule_id[i] + "?key=" + api_key
})
.done(function(data) {
//Check publicatieID is not null
if (undefined === data.scheduleEntries[default_pub] || null === data.scheduleEntries[default_pub]) {} else {
var key = schedule_id[teller];
//loopen doorheen resultaat call
$.each(data.scheduleEntries, function(index, entry) {
arr[key] = entry.startDate;
})
}
teller++;
})
}
//////////////////////////////////////////////////////////////////////////
//I want this part after the arr is filled
var timeArray = [],
newObj = {};
for (var key in arr) {
timeArray.push([key, arr[key]]);
}
timeArray.sort(function(a, b) {
return new Date(a[1]) - new Date(b[1])
});
//console.log(timeArray);
var j = 0,
k = 1;
for (var i = 0; i < timeArray.length; i++) {
newObj[timeArray[i][j]] = new Date(timeArray[i][k]);
}
将异步设置为 false
$.ajax({ url: "http://api.viewer.zmags.com/schedules/" + schedule_id[i] + "?key=" + api_key, 异步:假 })
将您的代码移至 done 函数
无法向主线程添加评论,根据您的评论,您似乎遇到了一些同步问题,所以我建议您花一些时间在 this (jquery deferred object) 上,我想这可能是您问题的解决方案