gpt4 book ai didi

AngularJS promise 不会使用 $interval 多次解决

转载 作者:行者123 更新时间:2023-12-04 13:59:55 27 4
gpt4 key购买 nike

惊讶地发现为什么使用 $interval 多次未解决 angularjs promise 服务。下面是我的代码。变量 i多次递增,但 promise 只解决一次。

var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope, myService) {
myService.then(function(result) {
$scope.i = result;
});
});
app.factory('myService', function($interval, $q) {
var deferred = $q.defer();
var i = 0;
$interval(function() {
i += 1;
deferred.resolve(i);
}, 2000);
return deferred.promise;
});

Plunker

最佳答案

一个 promise 代表一个单一的延迟值。它不会解决不止一次。

如果您想要事件流的类似功能,请查看 Rx.JS

使用 Rx,您的代码看起来很相似:

var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope, myService) {
myService.subscribe(function(result) {
$scope.i = result;
});
});
app.factory('myService', function($interval, $q) {
var subject = new Rx.Subject();
var i = 0;
$interval(function() {
i += 1;
subject.onNext(i);
}, 2000);
return subject;
});

关于AngularJS promise 不会使用 $interval 多次解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26158418/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com