javascript - La boucle for exécute plusieurs requêtes asynchrones mais l'ordre des données demandées est perturbé?
ringa_lee
ringa_lee 2017-06-12 09:26:54
0
3
637
$http({
        'url':'/jtkj/yjmc',
        'method':'POST',
    })
    .success(function(res) {
        $scope.yjdh = res;
        console.log(res);
        var navUrl = ['/genSit','/news','/set','/manage','/cooperate','/admNet','/eplNet','/stuMan'];

        //传值,循环遍历出数据
        $scope.xlcd = [];
        for(var i=0;i<res.length;i++){
            $scope.yjid = res[i].yjid;
            console.log(res[i].yjid);
            ejnameGet($scope.yjid);
            $http({
                url:'/jtkj/ejmc',
                method:'POST',
                data:{yjid:$scope.yjid}
            }).success(function(xlcd1){
                //$scope.xlcd = xlcd1;
                console.log(xlcd1);
                xlcd.push(xlcd1);
            })
        }
        //console.log($scope.xlcd);
        $scope.xlcd = xlcd;
        console.log($scope.xlcd);
ringa_lee
ringa_lee

ringa_lee

répondre à tous(3)
世界只因有你

Push quelle que soit la requête asynchrone terminée. Il est normal que le chaos se produise ; n'utilisez pas push, inscrivez-vous directement via i, et faites simplement attention au traitement de la valeur i (IIFE peut être utilisé)

黄舟

Une idée est de construire une structure de stockage telle qu'un tableau, et lorsque la fonction asynchrone i est exécutée, de remettre les données dans un tableau[i].

大家讲道理

Vous pouvez utiliser la méthode promise.all pour placer la requête dans un tableau, afin que la commande ne soit pas gâchée.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal