是否有可能在Angular.js中有一个异步控制器构造函数?

时间:2016-07-14 01:16:57

标签: angularjs asynchronous angular-promise

Here是返回基于$q的承诺的控制器构造函数的最小示例。承诺确实会被执行,但其结果不会反映在视图中。有没有办法完成承诺触发刷新?

$scope.property = 0;
return $q((resolve, reject) => {
    setTimeout(() => {$scope.property = 1; resolve();}, 5000);
});

1 个答案:

答案 0 :(得分:1)

看起来$q在消耗已解决的承诺之前不会触发摘要。这按预期工作

return $q((resolve, reject) => {
    setTimeout(() => {$scope.property = 1; resolve();}, 5000);
}).then(angular.noop);

理想情况下,您实际上使用的是解析器,例如

$q(resolver => 
    setTimeout(() => resolve(1), 5000)
).then(p => $scope.property = p);

或更简单地说,使用$timeout服务

$timeout(() => $scope.property = 1, 5000);

或使用$timeout

返回的承诺
$timeout(() => 1, 5000).then(p => $scope.property = p)