В jquery после завершения первого цикла вызовите другую функцию - PullRequest
0 голосов
/ 01 февраля 2019

В функции $ .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 я использую этот список массивов.

...