javascript - 将成功 promise 解析的值分配给外部变量

标签 javascript angularjs

我有一个很愚蠢的问题。请考虑以下事项:

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/

相关文章:

javascript - 如何中止一批异步获取请求?

javascript - 在苹果 iPhone 上,点击通知会捕获什么事件?

javascript - 如何导入 Material UI 图标?我在使用 Material ui 图标时遇到了一些问题

javascript - 用户配置文件栏的更好方法

javascript - Angular 模态未显示

javascript - 如何防止子组件更新父组件?

javascript - Angularjs 代码不在匿名函数中运行

javascript - 始终显示总计并停止显示 NaN

javascript - ng根据选择重复

javascript - AngularJS 过滤器表达式未更新