0
我簡化了代碼以解決特定問題。
我在$範圍2個功能:)singleRequest(和multiReqest()。 multiReqest()必須調用testServer()幾次然後調用singleRequest()。
問題在這個例子中:)singleRequest(前multiReqest()開始,但在同一時間的console.log( '所有的多請求的請求加載')稱爲將依次調用。 這是怎麼回事?我究竟做錯了什麼?謝謝。
function TestCtrl($scope, $q, $http) {
//variables declaration etc
var testServer = function (_pos) {
console.log('testServer:', _pos)
var deferred = $q.defer();
$http.get(service.first, parameters).success(function (data, status, headers, config) {
console.log(_pos, 'request from multiRequest loaded');
//do smth with data
deferred.resolve();
}).error(function (err) {
deferred.reject(err);
});
return deferred.promise;
};
//
//
$scope.singleRequest = function() {
console.log('Start singleRequest function');
$http.get(service.second).success(function (data, status, headers, config) {
console.log('Single request loaded');
//do smth with data
});
};
//
//
$scope.multiRequest = function (_callback) {
console.log('Start multiRequest function');
var promises = [];
for (var i = 1; i <= 3; i++) {
promises.push(testServer(i));
}
$q.all(promises).then(function() {
console.log('All requests from multiRequest loaded');
_callback;
});
};
//
$scope.multiRequest($scope.singleRequest());
}
控制檯日誌:
- 開始singleRequest功能
- 開始多請求功能
- TESTSERVER:1
- TESTSERVER:2
- TESTSERVER:3
- 單REQ被加載。 XHR加載完成:GET 「的http:// ...
- 1 」多請求要求裝「 XHR加載完成:GET」 的http:// ...
- 2 「多請求要求裝」。 XHR加載完成:GET 「的http:// ...
- 3 」從多請求要求裝「 XHR加載完成:GET」 的http:// ...
- 從多請求所有請求加載
同意Knelis。 – Harpreet
它的工作原理!謝謝 !在C語言將變量名稱作爲指向函數的指針後不習慣。 但是如果我需要通過參數傳遞迴調函數,例如$ scope.multiRequest(foo(bar)); ? – Archarious
然後,如果在調用回調的位置未知參數,則可以將其包裝在另一個函數中。例如。 '$ scope.multiRequest(function(){foo(bar,widget);});'。 – Knelis