相关疑难解决方法(0)

Angular:返回$ q.defer().promise而不是$ http promise

观看了很多Egghead.io视频,我注意到一个常见的模式是返回自定义承诺并在回调中解决它.

.factory('myFact', function($q, $http) {
    return {
        getData: function() {
            var deferred = $q.defer();
            $http.get('/path/to/api')
                .success(function(data) {
                    deferred.resolve(data);
                });
            return deferred.promise;
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

我通常会这样写:

.factory('myFact', function($http) {
    return {
        getData: function() {
            return $http.get('/path/to/api')
                .then(function(res) {
                    return res.data;
                });
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

返回$q.defer()承诺而不是$http承诺是否有任何好处?这些方法与我相同.

angularjs angular-http angular-promise

8
推荐指数
1
解决办法
2402
查看次数

Angular.js $资源结果

我发现Angular $资源的行为非常奇怪.请查看以下代码行:

    class Service
        constructor: ($resource) ->
            service = $resource '/record/:id'

            Service::list = (cb) ->
                service.query().$promise.then (data) ->
                    #result: data == [e, $promise: Object, $resolved: true]
                    cb data

            Service::get = (id, cb) ->
                service.get(id:id).$promise.then (data) ->
                    #result: data == {id: 1, name: 'name' ...}
                    cb format data
Run Code Online (Sandbox Code Playgroud)

服务"get"方法返回服务器发送的正确值(对象),但"list"方法作为结果返回包含$ promise和$ resolved的数组...

有没有人有一些逻辑解释?

更新:

我发现了这个问题.服务结果是字符串数组,导致sting chars的结果数组.这可以通过使用$ http而不是$ resource来解决.

例如:

服务器端 - > ['list','of','elements']

客户端 - > ['l','我','s','t']

angularjs

2
推荐指数
1
解决办法
4005
查看次数

标签 统计

angularjs ×2

angular-http ×1

angular-promise ×1