javascript - 使用 angularjs 承诺的随机数总和
问题描述
app.service("service1", function ($q) {
this.number1 = function (num1) {
var deferred = $q.defer();
var num1 = Math.floor((Math.random() * 5) + 1);
var result1 = num1;
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 = num2;
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) {
service1.number1().then(function (data) {
$scope.result1 = data;
})
service2.number2().then(function (data) {
$scope.result2 = data;
})
addservice.addition($scope.result1, $scope.result2).then(function (data) {
$scope.result = data;
});
});
service1
用于传递num1
和service2
for num2
。Service3 用于这些数字的总和。
如何在$q.all()
这里使用来同步多个承诺。?
解决方案
您可以使用$q.all()
方法,它接受一个对象或一组 promise 并等待它们全部resolve()
或其中一个,reject()
然后执行提供的回调函数。
//In $q as dependecies
app.controller('myCtrl', function ($scope, addservice, service1, service2, $q) {
//Persist reference of promomise
var p1 = service1.number1().then(function (data) {
$scope.result1 = data;
});
//Persist reference of promomise
var p2 = service2.number2().then(function (data) {
$scope.result2 = data;
});
//Pass references
$q.all([p1, p2]).then(function () {
//Now pass result 1 and 2
addservice.addition($scope.result1, $scope.result2).then(function (data) {
$scope.result = data;
})
});
});
推荐阅读
- python - Django Rest Framework url 过滤器,导入视图错误
- c# - .net-core 应用程序和 mashine.config(s) 中的空 DbProviderFactories
- glsl - 如何将着色器作为外部文件包含在内
- c++ - 大括号初始化列表和无符号类型
- r - R - 如何使用 color2d.matplot 为值分配颜色
- validation - Springboot 验证异常:org.springframework.validation.BeanPropertyBindingResult 异常
- path - 无法统计筛子存储路径:废话路径
- javascript - 使用 JavaScript 输入印地语
- scrapy - 如何在 Scrapy 中按顺序产生多个请求?
- python - 如何删除不必要的方括号 Python