У меня есть следующий код:
var service = {
startSetup: function() {
//If not logged in, redirect to login page
console.log('starting setup, checking login status');
return LoginService.loginStatus().then(function(result) {
var isGrantedPermissionToRoom = result.data.grantedAccess;
if (!isGrantedPermissionToRoom) {
$window.location = $window.location + '/login';
} else {
console.log('setting up room');
return service.setupRoom();
}
});
},
setupRoom: function() {
return RoomStateService.getRoomState().then(function() {
return UserService.getInitialUsersList();
});
}
};
return service;
Я хочу, чтобы startSetup возвращал обещание от UserService.getInitialUsersList
после того, как все будет завершено.
Мой код вызова:
SetupService.startSetup().then(function() {
console.log('Checking connection to room');
$scope.checkConnectionToRoom(UserService.myUserInfo)
}
и код для `UserService.getInitialUsersList':
getInitialUsersList: function() {
console.log('Getting initial users list');
var deferred = $q.defer();
service.getUserList().then(function(results) {
var newUserList = results.data.results;
updateLocalUserList(newUserList);
updateMyInformation();
HandsUpService.processAllUsers(newUserList);
deferred.resolve();
});
return deferred.promise;
}
Я знаю, что пока не обрабатываю отказы, но проблема не в этом. Кажется, что очень редко UserService.getInitialUsersList
не запускается полностью/вообще, когда управление возвращается вызывающему коду.
Правильно ли я возвращаю цепочку обещаний вызывающему коду?
Спасибо
getInitialUsersList
. - person Bergi   schedule 28.05.2017getInitialUsersList
, не создавая собственного обещания, поскольку мне нужно, чтобы работа послеservice.getUserList()
была завершена до того, как я вернусь. Все внутри этой функции синхронно. - person Si-N   schedule 28.05.2017return
вернуть значение вызоваthen(…)
, как вы делали это в других своих методах. - person Bergi   schedule 28.05.2017then(...)
. Я не уверен, что проблема все еще существует, поскольку она очень прерывистая, и если кажется, что вызывающий абонент (иногда!) восстанавливает контроль до завершенияgetInitialUsersList
. Хотя это может быть отвлекающим маневром. - person Si-N   schedule 28.05.2017