Problèmes avec plusieurs promesses dans angulaire.js
黄舟
黄舟 2017-05-16 13:20:03
0
2
547
<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

.
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(2)
Peter_Zhu
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);
    })
给我你的怀抱

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.

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