用$ http调用服务后的Angular承诺

时间:2014-08-20 11:12:24

标签: javascript angularjs promise

我实际上用angularjs开发了一个应用程序,我遇到了$ http的问题,以及对我的webservice的异步服务请求的结果。

实际上,我正在使用此代码:

var promise = undefined;

    UserService.getAll = function (callback) {

        promise = $http({
            url: __ADRS_SRV__ + "users",
            method: "GET",
            isArray: true
        }).success(function(data){
            return data;
        }).error(function(data){
            return $q.reject(data);
        });

        return promise;
    }

这不起作用,给我一些类似的东西,我不知道为什么:

Angular error returned by the call 要知道:在我的控制器中,我想使用一个非常简单的语法,如

var data = UserService.getAll();

您是否知道我应该如何处理以正确访问我的数据?

感谢您提前

2 个答案:

答案 0 :(得分:2)

你得到了回报。有多种方法可以使用这个承诺。

示例1 (在服务中使用promise并返回对象的引用):

UserService.getAll = function () {  
    var dataWrapper = {
        myData: {},
        error: null
    };

    $http({
        url: __ADRS_SRV__ + "users",
        method: "GET",
        isArray: true
    }).success(function(data){
        dataWrapper.myData = data;
    }).error(function(data){
        dataWrapper.error = true;
        return $q.reject(data);
    });

    return dataWrapper;
}

示例2 (返回承诺并直接在控制器中使用):

// service
UserService.getAll = function () {
    return $http({
        url: __ADRS_SRV__ + "users",
        method: "GET",
        isArray: true
    });
}
// controller
var promise = UserService.getAll();
promise.success(function(data) {
    $scope.data = data;
});

示例3 (使用常规回调):

// service
UserService.getAll = function (cb) {
    $http({
        url: __ADRS_SRV__ + "users",
        method: "GET",
        isArray: true
    }).success(cb);
}
// controller
UserService.getAll(function(data) {
    $scope.data = data;
});

答案 1 :(得分:1)

你提到的“东西”是你创造和回归的承诺。