我真的和我的一點代碼混淆,這是一個angularjs服務。我嘗試使用Promise.all來連接作爲服務一部分的兩個promise,並將結果發送給我的控制器。 事情是由Promise.all返回的對象由兩個相同的數組組成。 這裏我的代碼,只是爲了更清楚:Promise.all()返回意想不到的值
batchModule.service('BatchService', ['$http', '$q', '$log', 'MessageboxService', function ($http, $q, $log, MessageboxService) {
let deferred = $q.defer();
this.loadAll =() => {
promise1 =() => {
$http.get(_restApiPath + "/batch/?processtype=IMPORT_CUSTOMER")
// loadLastFiveBatch('IMPORT_CUSTOMER')
.then(function (response) {
deferred.resolve(response.data);
// datas.push(response1);
// console.log(datas);
}, function (error) {
deferred.reject(error);
$log.error(error);
});
return deferred.promise;
};
promise2 =() => {
$http.get(_restApiPath + "/batch/?processtype=IMPORT_LAB_MARGIN")
// loadLastFiveBatch('IMPORT_LAB_MARGIN')
.then(function (response) {
deferred.resolve(response.data);
// datas.push(response2);
// console.log(datas);
}, function (error) {
deferred.reject(error);
$log.error(error);
});
return deferred.promise;
};
Promise.all([promise1(), promise2()])
.then(values => {
console.log(values);
});
};
}]);
的的console.log(值)返回製成由IMPORT_CUSTOMER請求,返回2個等於陣列的一個目的,當Promise.all的第二個參數是一個恰恰promise由IMPORT_MARGIN請求返回。 我今天幾個小時一直在研究它,但我找不到任何解決方案。 我希望我很清楚,我的英語不是很好。 謝謝您的回答:-)
你只有一個單一的全球'deferred',所以它有點顯而易見的,爲什麼它能夠解析爲只有一個值。當然,在第一個時候避免[deferred antipattern](https://stackoverflow.com/q/23803743/1048572?What-is-the-promise-construction-antipattern-and-how-to-avoid-it)地點! – Bergi