AngularJS中的deferred.resolve()

时间:2013-07-02 13:04:11

标签: javascript angularjs deferred q

我需要截取ng-view的更改并加载“loading div”叠加层,直到加载所有新图像。

我正在尝试暂停我的HttpInterceptor中的promises回调,但我无法在第二次解决我的承诺。

这是一个例子:

return function (promise) {
    globalForTest = $q.defer();

    return promise.then(function (response) {
        console.log('first', response);
        return globalForTest.promise;
    }).then(function (response) {
        console.log('second', response);
        return response;
    });

http://jsfiddle.net/Lmvjh/

当我尝试调用globalForTest.resolve(value)时,没有任何反应,也没有错误。

1 个答案:

答案 0 :(得分:5)

它可以工作,但由于你在角度生命周期之外调用resolve,你需要explicitly call $scope.$apply来设置动态。否则将不会调用回调。

Link to fixed JSFiddle