2017-10-09 2 views
2

Während setInerval Fenster mit hängt

.controller('overviewCtrl', function ($scope, $http, $interval) { 
 
     $scope.cardShow = false; 
 
     $scope.infoShow = true; 
 
     $scope.yes1 = false; 
 
     $scope.yes2 = false; 
 
     $scope.status = true; 
 
     $scope.arbitration = true; 
 
     $scope.notAccepted = true; 
 
     $scope.cardShowRegular = false; 
 
     $scope.check1 = false; 
 
     $scope.id = 53; 
 
     $scope.opportunitiesArr = []; 
 
     $scope.opportunity = []; 
 
     $scope.profile = []; 
 
     /*getting opportunities*/ 
 

 
     $scope.oppList = function() { 
 
      $http.get("https://serviceme.blynksystems.com:6443/createContract/fseoppurtunities/" + $scope.id) 
 
       .then(function (response) { 
 
        $scope.opportunitiesArr = response.data; 
 
        console.log("opportunities " + JSON.stringify($scope.opportunitiesArr)); 
 
       }, function (response) { 
 
        console.log("error" + response); 
 
       }); 
 
     } 
 

 
     /*$rootScope.$broadcast("sendOpportunities", $scope.opportunitiesArr);*/ 
 
     $scope.oppList(); 
 
     /*end of getting opportunities*/ 
 
     $scope.contactInfo = function (opport) { 
 
      $scope.opportunity = opport; 
 
      console.log("opportfjdufiu" + JSON.stringify($scope.opportunity)); 
 
      console.log("opport " + JSON.stringify(opport)); 
 
      /*$scope.customerId = opport.customer_id;*/ 
 
      /*$scope.serviceName = opport.service_name; 
 
      $scope.carModel = opport.car_model;*/ 
 
      /*$scope.driverEmail = opport.driver_email;*/ 
 
      /*$scope.statusOfFse = opport.status_of_fse;*/ 
 
      $scope.cardShow = true; 
 
      $scope.cardShowRegular = true; 
 
      $scope.infoShow = false; 
 
      /*posting the acceptance*/ 
 
      if (opport.driver_email != null || opport.driver_email != undefined) { 
 
       var data = { 
 
        "mechanic_id": $scope.id, 
 
        /*"customer_id": opport.customer_id,*/ 
 
        "driver_email": opport.driver_email, 
 
        "service_name": opport.service_name, 
 
        "car_model": opport.car_model, 
 
        "status": 2, 
 
        "counter_price_fse": "" 
 
       } 
 
      } else { 
 
       var data = { 
 
        "mechanic_id": $scope.id, 
 
        "customer_id": opport.customer_id, 
 
        /*"driver_email": opport.driver_email,*/ 
 
        "service_name": opport.service_name, 
 
        "car_model": opport.car_model, 
 
        "status": 2, 
 
        "counter_price_fse": "" 
 
       } 
 
      } 
 
      console.log("emergency" + JSON.stringify(data)); 
 
      var req = { 
 
       method: 'POST', 
 
       url: 'https://serviceme.blynksystems.com:6443/createContract/updatewhenfseaccepted', 
 
       data: data 
 
      } 
 
      $http(req).then(function (response) { 
 
       console.log("respose" + JSON.stringify(response.data)); 
 
      }, function (response) { 
 
       console.log(response); 
 

 
      }); 
 
      $scope.callFtn = function() { 
 
    setInterval($scope.contactInfo(opport), 3000); 
 
} 
 
$scope.callFtn(); 
 
      /*$interval(function() { 
 
    $scope.contactInfo(opport) 
 
}, 3000);*/ 
 
      /*posting the acceptance*/ 
 

 
     } 
 
     });

ich ionischer project.I arbeite müssen den Status jeder nach 5 Sekunden in der Antwort zu überprüfen, die von der server.For kommt, die ich verwende setinterval.But während der Verwendung dieser Methode wird mein Fenster strucked.Ich habe auch versucht, SetTimeOut, obwohl das gleiche Problem zu wiederholen ist.Wie kann ich dieses Problem lösen.Hier ist mein Code:

+0

Haben Sie Fehler? '$ interval' sollte auch funktionieren. Sieht aus wie etwas ausfällt –

+0

Ich habe $ interval too.Auch in der contactInfo Funktion verwendet, die iam zeigt ein div tag.That div wird nach so viel Zeit angezeigt. –

Antwort

0

Sie verwenden setInterval rekursiv, was letztlich verursacht das Fenster um zu bleiben. Bitte sehen Sie dies für eine alternative Lösung: https://stackoverflow.com/a/18687829/1912288.

Verwenden Sie bitte $interval in Angular, da nach Bereichsänderungen gesucht wird, wenn $interval aufgerufen wird und Änderungen in den Bindungen widerspiegelt. Dies geschieht durch Auslösen des Digest-Zyklus.

+0

Danke. Mit $ interval ruft die Funktion contactInfo auf, aber die POST-Anforderung in der Funktion ruft nicht auf. Ich habe das erfahren, wenn die Konsolen innerhalb der Funktion drucken, wenn die contactInfo alle 3 Sekunden mit Ausnahme der POST-Anforderungskonsole aufruft im Erfolgsblock. –

Verwandte Themen