在angularjs中,我試圖以順序的方式一個接一個地執行服務。下面是我的代碼,Angularjs在承諾中執行服務
$q.when()
.then(function() {
console.log("Start");
return getMyDetailsService.MyDetails();
})
.then(function (MyDetails) {
console.log("Step 2");
var AllTabs = [];
angular.forEach(MyDetails, function(value, key){
AllTabs.push({ "TabName":value.checkfile });
});
return AllTabs;
})
.then(function (AllTabs) {
console.log("Step 3");
angular.forEach(AllTabs, function(value, key){
console.log(value.TabName);
return getMongodbDataService.MongoDatadb(value.TabName)
//console.log(MongoDatadb)
})
})
.then(function (MongoDatadb) { console.log("Step 4"); console.log(MongoDatadb); })
.then(function (AllTabs) { console.log("Finish"); })
問題是,我在控制檯中的「步驟4」後出現「未定義」。看起來服務「getMongodbDataService」沒有正確接受輸入。如果我評論forEach循環,並使用硬代碼輸入執行,它可以工作。
//angular.forEach(AllTabs, function(value, key){
//console.log(value.TabName);
return getMongodbDataService.MongoDatadb('Tab01')
//console.log(MongoDatadb)
//})
請建議,我在承諾處理中犯了錯誤。請告訴我,如果服務返回多個「MongoDatadb」響應,下一個函數(步驟4)將處理所有請求,還是隻處理最後一個請求。根據我的需要,我必須逐個處理所有的反應。
非常感謝
我可能籤他的職位https://開頭計算器.com/questions/20100245/how-can-i-execute-array-of-promise-in-sequential-order –
步驟3不返回任何內容。 ['angular.forEach'](https://docs.angularjs.org/api/ng/function/angular.forEach)只是爲每個項目調用迭代器函數一次,其中的'return'實際上沒有任何用處返回您的承諾鏈的結果。 –
嘗試使其返回AllTabs.map(函數(選項卡){返回getMongodbDataService.MongoDatadb(tab.TabName)});'而不是'forEach'。 –