我有一个返回数据的函数,名为medicalService.getMedicalEvents()
。像这样我捕获所有的医疗事件,现在每个医疗事件我需要将id
传递给另一个功能以捕获该事件的所有与会者。 medicalService.getMedicalAttendees(idMedicalEvent)
当我收到每个活动的所有与会者时,我需要重复这个过程以获得所有目标。因此,对于每位与会者,我将使用函数medicalService.getTarget(accountId)
,accountId是与会者。
当我得到所有目标时,我需要为每个目标做另一个目标,以创建一个具有我需要的所有信息的对象。与第一个forEach中的eventName
一样,attendeeName
来自第二个forEach,target
第三个来自每个。
我的问题与承诺有关,我如何能够使用承诺返回像call.mainObj
那样创建的对象?
medicalService.getMedicalEvents().then(function(resp) {
call.medicalEvents = resp.data;
call.numberEvents = call.medicalEvents.length;
call.medicalEvents.forEach(function(event) {
var deferred = $q.defer();
var idMedicalEvent = event.Id.value
medicalService.getMedicalAttendees(idMedicalEvent).then(function(resp2) {
call.allAttendeesForEvent = resp2.data;
call.allAttendeesForEvent.forEach(function(attendee) {
var accountId = attendee.Account_vod__c.value;
medicalService.getTarget(accountId).then(function(resp3) {
call.targetInfo = resp3.data;
call.targetInfo.forEach(function(target) {
var targetName = "C";
if (target.SRV_INT_Team_target__c.value !== undefined && target.SRV_INT_Team_target__c.value !== "") {
targetName = target.SRV_INT_Team_target__c.value;
}
call.mainObj.push({
eventName: event.Name.value,
attendee: attendee.Name.value,
target: targetName,
speciality: attendee.SRV_Specialty__c.value
});
})
})
})
})
medicalEventsDeferred.resolve(resp);
},
function(resp) {
medicalEventsDeferred.reject(resp);
})