cari

Rumah  >  Soal Jawab  >  teks badan

Masalah dengan berbilang kemudian janji dalam angular.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>

Kenapa apabila $scope.flag saya palsu, yang pertama kemudian adalah kesilapan dan yang kedua adalah kejayaan Jika saya ingin mengubahnya, bagaimana untuk mengubahnya

黄舟黄舟2740 hari yang lalu549

membalas semua(2)saya akan balas

  • 天蓬老师

    天蓬老师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);
        })

    balas
    0
  • 给我你的怀抱

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

    Setiap .kemudian mengembalikan janji baru. Selepas janji baharu melaksanakan kod yang gagal, ia akan menyelesaikan nilai pulangan fungsi yang kini dihantar ke .then. Jadi yang kedua dilaksanakan ialah kejayaan.

    Tidak berguna untuk bercakap terlalu banyak tentang masalah ini. Lihat sahaja kod sumber janji dan anda akan memahaminya sekaligus.

    balas
    0
  • Batalbalas