我正在努力理解为什么在调用updateStatus()
后看到“已解决承诺”登录到控制台,却没有看到“ refreshGames”的原因。如果refreshGames()
中的代码永不运行,如何解决诺言?
var refreshGames = function() {
console.log('refreshGames');
var defer = $q.defer();
playersService.getGames({
playerId: playerId
}).$promise.then(function(data) {
vm.games = data;
return defer.promise;
});
};
var updateStatus = function() {
$q.all([refreshGames.promise]).then(function() {
console.log('promise resolved');
populateOptions(vm.games);
vm.tableParams.reload();
});
};
最佳答案
由于您的函数refreshGames
不返回任何内容,因此应返回promise并且必须解决defer,如下所示:
var refreshGames = function() {
console.log('refreshGames');
var defer = $q.defer();
playersService.getGames({
playerId: playerId
}).$promise.then(function(data) {
vm.games = data;
defer.resolve(data);
});
return defer.promise;
};
在
$q.all
中,您只需执行refreshGames()