recherche

Maison  >  Questions et réponses  >  le corps du texte

Problèmes avec plusieurs promesses dans angulaire.js

<p ng-app="MyApp">
  <p ng-controller="MyController">
    <label for="flag">成功
      <input id="flag" type="checkbox" ng-model="flag" /><br/>
    </label>
    <p ng-cloak>
      {{status}}
    </p>
    <hr/>
    <button ng-click="handle()">点击我</button>
  </p>
</p>
<script>
  angular.module("MyApp", [])
    .controller("MyController", ["$scope", "$q", function ($scope, $q) {
      $scope.flag = true;
      $scope.handle = function () {
        var deferred = $q.defer();
        var promise = deferred.promise;

        if ($scope.flag) {
          deferred.resolve("you are lucky!");
        } else {
          deferred.reject("sorry, it lost!");
        }
        promise.then(function (result) {
          result = result + "you have passed the first then()";
          $scope.status = result;
          return result;
        }, function (error) {
          error = error + "failed but you have passed the first then()";
          $scope.status = error;
          return error;
        }).then(function (result) {
          alert("Success: " + result);
        }, function (error) {
          alert("Fail: " + error);
        })
      }
    }]);
</script>

Pourquoi quand mon $scope.flag est faux, le premier est alors une erreur et le second est alors un succès. Si je veux le changer, comment le changer

.
黄舟黄舟2845 Il y a quelques jours616

répondre à tous(2)je répondrai

  • 天蓬老师

    天蓬老师2017-05-16 13:22:03

    promise.then(function (result) {
          result = result + "you have passed the first then()";
          $scope.status = result;
          // return result;
          return $q.resolve(result);
        }, function (error) {
          error = error + "failed but you have passed the first then()";
          $scope.status = error;
          // return error;
          return $q.reject(error);
        }).then(function (result) {
          alert("Success: " + result);
        }, function (error) {
          alert("Fail: " + error);
        })

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:22:03

    Chacun renvoie ensuite une nouvelle promesse. Une fois que la nouvelle promesse aura exécuté le code ayant échoué, elle résoudra la valeur de retour de la fonction actuellement transmise dans .then. Donc le deuxième exécuté est le succès.

    Il est inutile de trop parler de ce problème. Il suffit de regarder le code source de la promesse et vous le comprendrez tout de suite.

    répondre
    0
  • Annulerrépondre