我有这样的服务,我喜欢这个
userRes.getCurrentUser = () => {
return userRes.get({
user: 1
});
};
我在我的控制器中使用了这个
console.log(currUserService.getCurrentUser());
并且它工作正常,我得到了一个承诺和解决后的对象
BUT
我想在获取数据后创建一个类,所以我喜欢这个
userRes.getCurrentUser = () => {
userRes.get({
user: 1
}).$promise.then(data => {
return new User(data);
});
};
然后我得到undefined
如何让它返回课程?
谢谢
修改
let userRes = $resource('url', {}, {});
答案 0 :(得分:0)
我不确定userRes
到底是什么,但一般来说,.then()
会返回其保证链。
更改
userRes.getCurrentUser = () => {
userRes.get({
user: 1
}).$promise.then(data => {
return new User(data);
});
};
到
userRes.getCurrentUser = () => {
return userRes.get({ // !! Notice the return statement here
user: 1
}).$promise.then(data => {
return new User(data);
});
};
会为您提供承诺链,您可以添加另一个.then()
以使用之前返回的新User
。
答案 1 :(得分:0)
在上一个示例中,它不返回任何内容,您应该通过添加return
返回Promise。
在服务中返回Promise<User>
之后,在您调用它的类中,您应该执行以下操作:
var userPromise = currUserService.getCurrentUser(); // Promise<User> type
userPromise.then(user => { /* do something with the user when it is resolved*/});
答案 2 :(得分:0)
在您的控制器脚本中,currUserService.getCurrentUser()将在不处理promise的情况下运行该函数。事实上,它什么都不会返回。
console.log(currUserService.getCurrentUser());
要正确使用$ promise,您可以返回$ promise,如
return userRes.getCurrentUser = () => {
userRes.get({
user: 1
}).$promise.then(data => {
return new User(data);
}); // end of this chain is another $promise
};
现在在你的控制器中你可以做到这一点
currUserService.getCurrentUser().then( user =>{
console.log(user);
});