asynchronous - vue 中的异步 props
问题描述
我有一个进行异步调用的方法。
methods: {
getPercentCovered() {
this.getPercentageCompletedBySubject(1).then((percent) => {
return percent;
});
},
它根据 ajax 请求返回的值计算百分比。
我想的问题是延迟
<progress-bar :percent="getPercentCovered()"></progress-bar>
在渲染道具之前,永远不会传入该值。有解决办法吗?
解决方案
问题不在于延迟。问题是它getPercentCovered()
永远不会返回percent
:它实际上会返回undefined
。您不能return
得到异步操作的结果:在这种情况下,您最多可以做的就是返回整个 Promise 并在子进程中处理它。
这个著名的答案突出了您的代码的一般问题。
现在,关于您问题的 Vue 部分,有几种方法可以处理这个问题。我想最直接的方法是将道具传递给孩子,当getPercentageCompletedBySubject
解决时它会更新。我将调用放在created()
生命周期挂钩中。也许您应该将其移至事件处理程序,这实际上取决于实际用例:
//script
data() {
return {
percent: '', //or maybe null or whatever empty value.
};
},
methods: {
getPercentCovered() {
this.getPercentageCompletedBySubject(1).then((percent) => {
this.percent = percent; //instead of return from a handler, which does nothing ,
// now we assign to this.percent
});
},
created(){
this.getPercentCovered();
}
//template
<progress-bar :percent="percent"></progress-bar>
推荐阅读
- string - 从字符串末尾提取数字
- java - JAXB and LinkedHashMap: XML serialization failure
- java - Problems to emulate a "hdfs dfs -ls -R /" command in java
- javascript - Access attribute of a javascript object
- python - 使用 Spyne,尝试将生成的多个命名空间压缩到 SOAP 请求中的单个命名空间
- html - 激活或悬停时动画 Svg Path D 坐标
- python - 如果使用 python 的 id 相同,我如何总结列的值
- java - Beanutils 使 copyproperties 在不同类型的嵌套属性上工作
- c++ - 编译器在不需要复制构造函数时会关心它
- javascript - 尽管在 JS 中处理了失败,但 Chrome 报告请求失败