У меня есть функция getGames()
в моем контроллере Angular, которая может быть вызвана как моей функцией init()
, так и функцией update()
. Мне нужно знать, init()
или update()
вызвали эту функцию, потому что я рассматриваю каждую ситуацию по-разному.
Я пытался получить доступ к arguments.callee.caller.toString()
, но это не разрешено в строгом режиме, который является требованием для этого проекта.
Как я могу получить доступ к вызывающему абоненту getGames()
в строгом режиме?
Моя текущая структура ниже. Очевидно, что loadingGames.promise
внутри updateSchedule()
не работает, потому что это обещание уже было разрешено, когда init()
выполнялось. Я изо всех сил пытаюсь реорганизовать это так, чтобы init()
и updateSchedule()
зависели от разных разрешений обещаний в отношении одной и той же функции, getGames()
.
var loadingGames = $q.defer();
var getGames = function() {
playersService.getGames({
playerId: playerId
}).$promise.then(function(data) {
vm.games = data;
loadingGames.resolve();
});
};
var init = function() {
getGames();
}
init();
var updateSchedule = function() {
getGames();
loadingGames.promise.then(function() {
populateOptions(vm.games);
vm.tableParams.reload();
});
};
Моя мысль заключалась в том, чтобы определить caller
в конце getGames()
, а затем разрешить другое обещание в зависимости от того, кто был вызывающим абонентом.
$q.all
по отношению к функцииinit()
. Есть около полдюжины асинхронных операций, которые необходимо выполнить, прежде чем моя функцияinit()
сможет завершить работу. Однако после загрузки страницы пользователь может выполнять определенные действия, которые требуют только разрешенияgetGames()
перед обновлением представления. Что я собираюсь сделать, так это разрешить различные обещания в зависимости от того, был лиinit()
вызывающим абонентом илиupdate()
. - person MattDionis   schedule 13.08.2015