我正在运行一个函数,该函数将变量的内容添加到函数内的URL中:
var stateWarn = "MA"; //variable to be passed (easy to find and change if I want)
$(window).on('load', function() {
CheckWarnings();
setInterval(function(){ CheckWarnings(); }, REFRESH_FREQ);
});
function CheckWarnings() {
arrayEvents = [];
console.log("Checking API...");
$.ajax({
url: 'https://api.weather.gov/alerts/active/area/' + item,
jsonp: false,
type: 'get',
jsonpCallback: 'callback',
cache: true,
mode: 'no-cors',
dataType: 'json',
crossDomain: true,
success: function(data) {
if (data === null) {
console.log("Data returning with NULL!");
LoadError();
return;
}
dataTime = data.updated;
if (!dataTimeCheck) {
console.log("No check available...creating dataTimeCheck variable
and running jsonCrawler.")
dataTimeCheck = dataTime;
console.log("Setting initial datatimeCheck variable to: " +
dataTimeCheck);
jsonCrawler(data);
} else if (!(dataTime == dataTimeCheck)) {
console.log("'data' and 'dataTimeCheck' variables do not match...
running jsonCrawler.")
dataTimeCheck = dataTime;
jsonCrawler(data);
} else if (dataTime == dataTimeCheck) {
console.log("No new data detected.")
return;
}
return;
我想将变量stateWarn更改为数组:
var stateWarn = ["MA", "NH", "NY", "RI"]
并为stateWarn中的每个条目运行CheckWarnings函数。到目前为止,我还没有找到适合我的AJAX实现这一点的方法。我已经用Javascript的.forEach命令完成了。任何帮助都非常感谢!
发布于 2018-10-23 07:35:56
我认为这应该会实现您想要实现的目标。您可以让它在每次运行时从堆栈中弹出最新的状态:
var stateWarn = ["MA", "NH", "NY", "RI"],
dataTimeCheck,
intervalId;
$(window).on('load', CheckWarnings);
function setupInterval() {
if (intervalId) {
return;
}
intervalId = setInterval(CheckWarnings, REFRESH_FREQ);
}
function onSuccess(data) {
if (data === null) {
console.log("Data returning with NULL!");
LoadError();
return;
}
dataTime = data.updated;
if (!dataTimeCheck) {
console.log("No check available...creating dataTimeCheck variable and running jsonCrawler.");
dataTimeCheck = dataTime;
console.log("Setting initial datatimeCheck variable to: " + dataTimeCheck);
jsonCrawler(data);
} else if (!(dataTime == dataTimeCheck)) {
console.log("'data' and 'dataTimeCheck' variables do not match... running jsonCrawler.")
dataTimeCheck = dataTime;
jsonCrawler(data);
} else if (dataTime == dataTimeCheck) {
console.log("No new data detected.")
}
}
function CheckWarnings() {
var curState = stateWarn.pop();
if (!curState) {
if (intervalId) {
window.clearInverval(intervalId);
}
return;
}
arrayEvents = [];
console.log("Checking API...");
$.ajax({
url: 'https://api.weather.gov/alerts/active/area/' + curState,
jsonp: false,
type: 'get',
jsonpCallback: 'callback',
cache: true,
mode: 'no-cors',
dataType: 'json',
crossDomain: true,
success: function(data) {
onSuccess(data);
if (!invervalId) {
setupInterval();
}
}
});
}
https://stackoverflow.com/questions/52938677
复制相似问题