Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 完成后的角度运行_Angularjs_Promise - Fatal编程技术网

Angularjs 完成后的角度运行

Angularjs 完成后的角度运行,angularjs,promise,Angularjs,Promise,我是一个新的角度,所以这将是最容易的。 我有一个具有一个功能的服务: .factory('HttpHandler', function () { return { loadData: function (promise) { var self = { data: [], loading: true, promise: promise

我是一个新的角度,所以这将是最容易的。 我有一个具有一个功能的服务:

.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;
        }
    };
});
我想要的是,能够在成功完成后运行其他东西。Seudo代码:

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);
});

我知道这很简单:)我不知道你需要这个
self
对象做什么。它似乎没有比承诺更多的东西了?