服务返回空承诺

时间:2016-09-20 11:10:22

标签: javascript angularjs

我有服务,我在其中模拟http请求。

e.g。 我有一些对象用户:

var users = [{
    id: 1,
    name: 'Name1',
    groupId: 2
}, {
    id: 2,
    name: 'Name2',
    groupId: 1
}];

我有要求的功能:

this.getUser = function(userId) {
    return this._returnLater(users.filter(function(user) {
        return user.id === userId;
    })[0]).then(angular.copy);
};

并使用函数returnLater,它基本上只是随机设置超时

this._returnLater= function(response) {
    return $timeout(function() {
        return response;
    }, Math.random() * 2000);
};

这对我来说很合适。但是,如果我尝试从我的指令运行此代码:

var promise = UserService.getUser(1);
promise.then(function(res) {
  aeCtrl.user = res;
});

我的aeCtrl.user为空,如果我在console.log(promise)之前尝试promise.then我得到了这个:

enter image description here

有人可以告诉我我做错了吗?

1 个答案:

答案 0 :(得分:-1)

您可能需要返回新的承诺并在超时中解决它

this._returnLater= function(response) {
    return new Promise(function(resolve) { 
        $timeout(function() {
            resolve(response);
        }, Math.random() * 2000);
    });
};