函数后,数组保持为空($ http.post和for-loop)

时间:2016-01-06 19:29:22

标签: javascript angularjs ajax asynchronous nodes

数组'relatedBoxes'之后不包含正确的信息。如果看起来是空的。 我认为这可能是一个异步问题,但我不知道如何更改我的代码...我今天读了几页关于javascript的异步行为,但它并不适合我的情况。 我还在这里发现了一个> 2k upvotes,但这个也没有帮助我-.-

有人可以快速重构我的代码或告诉我问题在哪里吗?

感谢任何帮助!

问候

var o = {
boxesSubbed:[],
acceptancethreshold,
relevantBoxes[]
};

var currentLastAw;

        o.updateRelevantBoxes = function() {
        	//Reset Boxes on start
            o.relevantBoxes = [];
            $http.get('/members-matter/mm-boxes/'+auth.currentUserId()+'/subbed/get-boxes').success(function(boxes){
                angular.copy(boxes, o.boxesSubbed);

                $http.get('/members-matter/mm-user/'+auth.currentUserId()+'/get-acceptance-threshold').success(function(threshold){
                    o.acceptancethreshold = threshold;

                    for(var i=0; i< o.boxesSubbed.length; i++){
                        (function () {
                            var currentBox = o.boxesSubbed[i];
                            $http.post('/members-matter/mm-boxes/get-last-answered', currentBox).success(function (lastaw){
                                currentLastAw = lastaw;
                                var data = {
                                    frequency:currentBox.frequency,
                                    lastanswered:currentLastAw
                                };
                                $http.post('/members-matter/mm-boxes/get-urgency', data).success(function (urgency){
                                    if(urgency > o.acceptancethreshold){
                                        o.relevantBoxes.push(currentBox);
                                    }
                                });
                            });
                        })();
                    }
                });
            });
        };

0 个答案:

没有答案