В функции $ .each я вызываю метод jquery ajax, который возвращает список, так что возвращаемый список, который я хочу использовать в другой функции, параллельно с тем, что цикл jquery ajax также будет работать и непрерывно возвращать значение и вызывать этот другойфункция, но она не происходит параллельно, означает, что после завершения функции $ .each она вызывает другую функцию с последним возвращенным списком.Но я хочу, чтобы однажды возвращенный список вызвал другую функцию с этим возвращаемым значением и продолжил.
function Test() {
var x = $('#myHiddenVar').val();
$.each($.parseJSON(x), function (key, value) {
$.ajax({
type: 'POST',
url: '@Url.Action("GeoIPDashboardDataload", "Home")',
data: { branchId: value },
async: false,
error: function (xhr, status, error) {
console.log(error);
},
success: function (data) {
debugger;
if (data != null) {
$(data.logs).each(function (index) {
debugger;
var _id = index;
var _logId = data.logs[index].id;
var _dstIP = data.logs[index].dst_ip;
var _dstCountryName = data.logs[index].dst_geoData.country_name;
var _dstlatitude = data.logs[index].dst_geoData.latitude;
var _dstlongitude = data.logs[index].dst_geoData.longitude;
var _srcIP = data.logs[index].src_ip;
var _srcCountryName = data.logs[index].src_geoData.country_name;
var _srclatitude = data.logs[index].src_geoData.latitude;
var _srclongitude = data.logs[index].src_geoData.longitude;
var _threatType = data.logs[index].threat_type;
var locations = {
"id": _id,
"logId": _logId,
"dstIP": _dstIP,
"dstCountryName": _dstCountryName,
"dstlatitude": _dstlatitude,
"dstlongitude": _dstlongitude,
"srcIP": _srcIP,
"srcCountryName": _srcCountryName,
"srclatitude": _srclatitude,
"srclongitude": _srclongitude,
"threatType":_threatType
};
queryStr = { "locations": locations };
queryArr.push(queryStr);
});
companyName = data.comp;
branchName = data.branch;
attacks.init();
}
}
});
});
}
------------
attacks = {
interval: getRandomInt(attack_min, attack_max),
init: function () {
setTimeout(
jQuery.proxy(this.getData, this),
this.interval
);
},
getData: function () {
var srclat = arr[arrayCount].src_geoData.latitude;
var srclong = arr[arrayCount].src_geoData.longitude;
var dstlat = arr[arrayCount].dst_geoData.latitude;
var dstlong = arr[arrayCount].dst_geoData.longitude;
var sourceip = arr[arrayCount].src_ip;
var attackerIP = arr[arrayCount].dst_ip;
var srccountry = arr[arrayCount].src_geoData.country_name;
attackdiv_slatlong = arr[arrayCount].dst_geoData.country_name;
hits.push({
origin: { latitude: srclat, longitude: srclong },
destination: { latitude: dstlat, longitude: dstlong }
});
map.arc(hits, { strokeWidth: 2 });
boom.push({
radius: 7, latitude: dstlat, longitude: dstlong,
attk: attackerIP
});
map.bubbles(boom, {
popupTemplate: function (geo, data) {
return '<div class="hoverinfo">' + data.attk +'</div>';
}
});
arrayCount++;
this.interval = getRandomInt(attack_min, attack_max);
this.init();
},
};
Итак, вышеприведенный тестовый метод вызывается из функции document.ready и после помещения всего элемента в вызов массива queryArr.attack.init и внутри attack.int я использую этот список массивов.