Dim*_*kin 6 javascript promise angularjs
请考虑以下示例:
.service('movieGetter', ['$q', '$timeout', function ($q, $timeout) {
this.getData = function () {
var deferred = $q.defer();
$timeout(function(){
mock.getData(function(data){
deferred.resolve(data);
});
}, 2000);
return deferred.promise;
};
}]);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,当代码行deferred.resolve()在constroller中触发回调时,这段代码不起作用
另一方面,这个例子工作正常:
.service('movieGetter', ['$q', '$timeout', function ($q, $timeout) {
this.getData = function () {
var deferred = $q.defer();
$timeout(function () {
deferred.resolve('test');
}, 2000);
return deferred.promise;
};
}]);
Run Code Online (Sandbox Code Playgroud)
当deferred.resolve()在回调内部触发时,有一些原因,那么在constroller上的回调不起作用.
有任何想法吗?
谢谢!
Dim*_*kin 14
如图所示,angular中的promise API是范围的一部分,因此,当调用内部回调时的resolve不在$ apply循环中并且它不知道函数调用.
要解析此$ scope,应在resolve函数之后立即调用$ apply().如果在服务中,并且$ scope injectable不可用,则可以注入$ rootScope.
| 归档时间: |
|
| 查看次数: |
2511 次 |
| 最近记录: |