Questions tagged «angular-promise»


10
AngularJS:使用异步数据初始化服务
我有一个AngularJS服务,我想使用一些异步数据进行初始化。像这样: myModule.service('MyService', function($http) { var myData = null; $http.get('data.json').success(function (data) { myData = data; }); return { setData: function (data) { myData = data; }, doStuff: function () { return myData.getSomeData(); } }; }); 显然,这是行不通的,因为如果doStuff()在myData返回之前尝试进行调用,我将得到一个空指针异常。据我从阅读这里和这里提出的其他一些问题中所知道的,我有一些选择,但是它们似乎都不是很干净(也许我错过了一些东西): 安装服务“运行” 设置我的应用时,请执行以下操作: myApp.run(function ($http, MyService) { $http.get('data.json').success(function (data) { MyService.setData(data); }); }); 然后我的服务将如下所示: myModule.service('MyService', function() …


12
如何获得承诺的价值?
我正在从Angular的文档中查看此示例,$q但我认为这可能总体上适用于Promise。下面的示例从他们的文档中逐字复制,并包含注释: promiseB = promiseA.then(function(result) { return result + 1; }); // promiseB will be resolved immediately after promiseA is resolved and its value // will be the result of promiseA incremented by 1 我不清楚这是如何工作的。如果我可以调用.then()第一个的结果.then()并将它们链接起来(据我所知),那么它promiseB就是一个类型为Promise的对象Object。这不是一个Number。那么,它们的含义是“其值将是promiseA的结果加1”? 我应该以这种方式访问promiseB.value吗?成功回调如何返回承诺并返回“结果+ 1”?我想念一些东西。

5
等待所有诺言解决
因此,我遇到了多个未知长度的promise链的情况。我希望在处理完所有链条后执行一些操作。那有可能吗?这是一个例子: app.controller('MainCtrl', function($scope, $q, $timeout) { var one = $q.defer(); var two = $q.defer(); var three = $q.defer(); var all = $q.all([one.promise, two.promise, three.promise]); all.then(allSuccess); function success(data) { console.log(data); return data + "Chained"; } function allSuccess(){ console.log("ALL PROMISES RESOLVED") } one.promise.then(success).then(success); two.promise.then(success); three.promise.then(success).then(success).then(success); $timeout(function () { one.resolve("one done"); }, Math.random() …

1
永远不会解决的承诺会导致内存泄漏吗?
我有一个Promise。我创建它是为了取消AJAX请求(如果需要)。但是由于我不需要取消该AJAX,因此我从未解决过该问题,因此AJAX成功完成了。 简化的代码段: var defer = $q.defer(); $http({url: 'example.com/some/api', timeout: defer.promise}).success(function(data) { // do something }); // Never defer.resolve() because I don't need to cancel that ajax. What happens to this promise after request? 永远不会解决那样的承诺会导致内存泄漏吗?您对如何管理Promise生命周期有任何建议吗?

4
angular $ q,如何在for循环内和之后链接多个promise
我想要一个for循环,该循环在每次迭代时调用异步函数。 在for循环之后,我想执行另一个代码块,但是在解决for循环中的所有先前调用之前,不要执行。 目前我的问题是,在for循环之后执行的代码块在所有异步调用完成之前执行,或者根本不执行。 带有FOR循环的代码部分及其后的代码块(有关完整代码,请参阅fiddle): [..] function outerFunction($q, $scope) { var defer = $q.defer(); readSome($q,$scope).then(function() { var promise = writeSome($q, $scope.testArray[0]) for (var i=1; i < $scope.testArray.length; i++) { promise = promise.then( angular.bind(null, writeSome, $q, $scope.testArray[i]) ); } // this must not be called before all calls in for-loop have finished …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.