我有一个很愚蠢的问题。请考虑以下事项:
vm.feed = getFeed().then(function(data) {return data;});
getFeed()
返回成功解析的 $q 延迟 promise (我在 Angular 上)。
我的目标是将 vm.feed 设置为等于成功回调返回的数据值。现在,代码只是将 vm.feed 分配给 getFeed()
返回的 $promise
对象。
我知道我可以简单地做:vm.feed = data
inside resolved function 但我想了解为什么这段代码不能正常工作。
PD:promise 正确解析,甚至在解析后 vm.feed 仍然等于 Promise,而不是数据。我在 10 秒后复制了 vm.feed 的 console.log:
Promise {$$state: Object} $$state: Objectstatus:1 value: Object
Promise 对象中的值属性包含我想分配给 vm.feed 的实际解决方案(即 data
)。
谢谢!
最佳答案
这可以用箭头函数更新到 ES6,看起来像:
getFeed().then(data => (vm.feed = data));
如果你想使用异步函数
,你也可以这样做:
async function myFunction(){
vm.feed = await getFeed();
// do whatever you need with vm.feed below
}
编辑:添加括号以使 eslint 正确(如 Max Waterman 评论)
关于javascript - 将成功 promise 解析的值分配给外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31264153/