добавление случайных чисел с помощью обещаний angularjs - PullRequest
0 голосов
/ 11 октября 2018
app.service("service1",function($q,$timeout){
  this.number1 = function(num1) {
    var deferred = $q.defer();
    var result1 = Math.floor((Math.random()*5)+1);
    deferred.resolve(result1)
    return deferred.promise;
  }
});
app.service("service2",function($q){
  this.number2 = function(num2) {
    var deferred = $q.defer();
    //var num2=Math.floor((Math.random()*5)+1);
    var result2 = Math.floor((Math.random()*5)+1);
    // deferred.reject(0)
    deferred.resolve(result2)
    return deferred.promise;
  }
});
app.service("addservice",function($q){
  this.addition = function(num1 , num2) {
    var deferred = $q.defer();
    var result = num1+num2
    deferred.resolve(result)
    return deferred.promise;
  }
});
app.controller('myCtrl', function($scope, addservice,service1,service2,$q) {
 var p1 = service1.number1().then(function (data) {
  $scope.result1 = data;
  return data;
 });

 var p2 = service2.number2().then(function (data) {
  $scope.result2 = data;
  return data;
 });

$q.all([p1, p2]).then(function () {
 addservice.addition($scope.result1,$scope.result2)
.then(function (data) {
    $scope.result = data;
  })
});
});

Как использовать $timeout, чтобы оба числа появлялись через некоторое время?

И как использовать deferred.reject() для числа больше 5, которое появляется случайно?Нам нужно только deferred.resolve() чисел меньше 5.

1 Ответ

0 голосов
/ 11 октября 2018
app.service("service1",function($q,$timeout){
  this.number1 = function(num1) {
    var deferred = $q.defer();
    var result1 = Math.floor((Math.random()*5)+1);
    $timeout(function() {
       if (result1 > 5) {
          deferred.reject(result1);
       } else {
          deferred.resolve(result1);
       }
    }, 500);
    return deferred.promise;
  }
});
app.service("service2",function($q, $timeout){
  this.number2 = function(num2) {
    var deferred = $q.defer();
    //var num2=Math.floor((Math.random()*5)+1);
    var result2 = Math.floor((Math.random()*5)+1);
    // deferred.reject(0)
    $timeout(function() {
        if (result2 > 5) {
           deferred.reject(result2);
        } else {
           deferred.resolve(result2);
        }
    }, 100);
    return deferred.promise;
  }
});
app.service("addservice",function($q){
  this.addition = function(num1 , num2) {
    var deferred = $q.defer();
    var result = num1+num2
    deferred.resolve(result)
    return deferred.promise;
  }
});
app.controller('myCtrl', function($scope, addservice,service1,service2,$q) {
 var p1 = service1.number1().then(function (data) {
  $scope.result1 = data;
  return data;
 });

 var p2 = service2.number2().then(function (data) {
  $scope.result2 = data;
  return data;
 });

$q.all([p1, p2]).then(function () {
 addservice.addition($scope.result1,$scope.result2)
.then(function (data) {
    $scope.result = data;
  }, function(reason) {
     $scope.result = NaN
  }
});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...