Angular 运行 完成后

Angular run after complete

我是 Angular 的新手,所以这对大多数人来说都很容易。 我有一项具有一项功能的服务:

.factory('HttpHandler', function () {
    return {
        loadData: function (promise) {
            var self = {
                data: [],
                loading: true,
                promise: promise
            };

            promise.then(function (data) {
                self.data = data;
                self.loading = false;
            });

            promise.finally(function () {
                self.loading = false;
            });

            return self;
        }
    };
});

我想要的是能够在成功完成后 运行 其他事情。伪代码:

var result = httpHandler.loadData(httpCall, function (complete) {
    console.log('this has completed');
});

有人可以向我解释一下我该怎么做吗?

在不更改 httpHandler 的情况下,这是最接近您在代码中描述的行为的方法:

var resultPromise = httpHandler.loadData(httpCall)
                      .promise
                      .then(function (complete) {
                          console.log('this has completed.')
                      });

但是,您可能希望单独保存 httpHandler.loadData(httpCall) 的结果以使用其中的其他属性:

var result = httpHandler.loadData(httpCall);
result.promise.then(function () {
    console.log('this has completed: ', result.loading, 
                ' with data: ', result.data);
});