[英]Waiting for the response of several promises in EmberJS
我正在嘗試進行3個API調用,然后返回所有數據的數組。 但是,console.log()(因此函數返回)為空,因為它不等待解析AJAX調用-但由於需要所有數據,因此無法在循環中執行。
let data = [];
parameters.forEach((parameter, index) => {
return Ember.$.ajax(url).then((response) => {
data.push({
name: parameter.get('displayName'),
color: parameter.get('color'),
type: chart.get('chartType'),
turboThreshold: 0,
data: response.data
});
});
});
console.log(data);
return data;
我認為我可以為此使用Ember.RSVP.hash(),但似乎無法正常工作……有人能指出我正確的方向嗎?
當所有內在的承諾都得到解決時,返回一個承諾並解決它。 我沒有嘗試代碼,但這應該為您指出如何進行。
return new Ember.RSVP.Promise(function (resolve) { //return a promise
let promises = [];
let data = [];
parameters.forEach((parameter, index) => {
promises[index] = Ember.$.ajax(url).then((response) => { //store all inner promises
data.push({
name: parameter.get('displayName'),
color: parameter.get('color'),
type: chart.get('chartType'),
turboThreshold: 0,
data: response.data
});
});
});
Ember.RSVP.all(promises).then(function(){
resolve(data); //resolve the promise when all inner promises are resolved
});
});
您可以嘗試這樣的事情:
return Promise.all(parameters.map(parameter => Ember.$.ajax(url).then(response => {
'name': parameter.get('displayName'),
'color': parameter.get('color'),
'type': chart.get('chartType'),
'turboThreshold': 0,
'data': response.data
}))).then(data => {
console.log(data);
return data;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.