Чего я пытаюсь достичь, так это:
- Вызов моей службы для получения всех встреч в типах встреч (количество типов не фиксировано), привязанных к врачу
- Если есть 3 типа встреч, то будет сделано 3 асинхронных вызова
- вернуть одно обещание с помощью $q.all() после того, как все 3 обещания были разрешены
Служба назначения
this.getAllDoctorAppointments = function (doctor, appointmentTypeArray) {
var promises = [];
angular.forEach(appointmentTypeArray, function (appointmentType) {
var defer = $q.defer();
$http.get('/appointments/?doctorName=' + doctor + '&apptType=' + appointmentType)
.success(function (listOfAppointments) {
defer.resolve(listOfAppointments);
promises.push(defer.promise);
});
});
return $q.all(promises);
};
В моем консольном журнале назначениеType возвращает [ ]. Это происходит из-за того, что пустой массив "promises" возвращается еще до того, как будут сделаны 3 асинхронных вызова. Я все еще очень новичок в концепции обещаний, как лучше всего это сделать? Спасибо!
$scope.getAllDoctorAppointments = function (doctor, appointmentTypeArray) {
appointmentService.getAllDoctorAppointments(doctor, appointmentTypeArray)
.then(function (appointmentType) {
//could take in any number. hardcoded 3 just for testing.
console.log(appointmentType)
angular.forEach(appointmentType[0], function (xRay) {
$scope.xRayAppts.events.push(xRay);
});
angular.forEach(appointmentType[1], function (ctScan) {
$scope.ctScanAppts.events.push(ctScan);
});
angular.forEach(appointmentType[2], function (mri) {
$scope.mriAppts.events.push(mri);
});
});
};
var defer
, но в то же время он будет работать, если вы не нажмете обещание внутри обратного вызова успеха... слишком поздно тогда.. натолкните его за пределыsuccess
- person charlietfl   schedule 14.10.2015