【发布时间】:2017-07-27 15:10:45
【问题描述】:
我被困在试图返回一堆承诺的价值。
解释一下情况:有 4 个模型 - 组中的学生对每个目标得分 /strong>。
所以我制作了一个组件,我将一个objective和group传递到其中。然后该组件处理对商店的请求,以查找每个学生针对该目标的分数,并返回平均值。
代码似乎工作,console.logs 给了我我想要的,直到最后,但承诺不会解析到模板中 - 我得到 { object Object },我相信这是未解决的承诺。
我在这里遗漏了什么?等待多个 Promise 解决时是否需要额外的步骤?
我很欣赏这有点具体,当我理解答案时,我会尝试重新表述问题。
组件代码:
averageScore: Ember.computed(function(){
var students = this.get('group.students');
var objective = this.get('objective');
var store = this.get('store');
var _this = this;
// Create an array of promises of each student's scores
var promises = [];
students.forEach((student) => {
var studentId = student.get('id');
var objectiveId = objective.get('id');
var newPromise = store.queryRecord('snapscore', { 'student' : studentId, 'objective': objectiveId });
promises.pushObject(newPromise);
});
// When promises resolve, find and return the average
return Ember.RSVP.allSettled(promises).then(function(scores){
let scoreTotal = 0;
let scoreCount = scores.length;
console.log("Score count is " + scoreCount);
scores.forEach((score)=>{
console.log("Student's score is " + score.value.get('score'));
scoreTotal = scoreTotal + score.value.get('score');
});
console.log("ScoreTotal is " + scoreTotal);
var average = scoreTotal/scoreCount;
console.log(average);
console.log(typeof(average));
return average;
});
}),
然后组件的模板简单地返回 averageScore。
谢谢
【问题讨论】:
标签: ember.js promise ember-data