vue子组件调用父组件方法,如何保证按照顺序执行(promise写的好像有问题)
子组件
`
save() {
this.$refs.form.validate((valid) => {
if (valid) {
this.$axios
.post(`/api/wordInfo/updateData.json`, data)
.then((res) => {
if (res.success) {
this.getNature();
this.$emit("getPassage", this.passageId);
this.$emit("getSelectText", res.result);
this.$emit("getMeaning", res.result.word);
this.$emit("getWord", res.result);
} else {
this.$message.error(res.message);
}
});
}
});
},
`
子组件的save方法完毕之后 要连续调用三个父组件的方法 由于 getPassage getSelectText getWord getMeaning 这四个方法都是 axios请求,并且需要严格按照顺序执行,切第一个执行完毕之后 第二个执行 第二个执行完毕之后 第三个执行 ...... 不然会影响到页面
开始改成了promise 但是 报错$emit undefined 感觉应该用promise实现 但是写起来好像有问题 求教各位
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
层层嵌套有点麻烦,你可以这样来做:
emit
没有返回值,用不了promise
,你只能在父组件每个函数内加个回调用来解决顺序执行的问题。最终代码大概写成这样。
个人建议你可以在父组件再封装个处理函数,把
passageId
跟res.result
传出去,让父组件直接按顺序处理这一系列的动作