我有服务,我在其中模拟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
我得到了这个:
有人可以告诉我我做错了吗?
答案 0 :(得分:-1)
您可能需要返回新的承诺并在超时中解决它
this._returnLater= function(response) {
return new Promise(function(resolve) {
$timeout(function() {
resolve(response);
}, Math.random() * 2000);
});
};