【发布时间】:2018-12-21 11:39:47
【问题描述】:
假设我编写了一个 vue.js 组件,并且我想使用包含一些异步操作的生命周期钩子(在本例中为“已销毁”)。我不想在异步操作完全提交之前离开钩子。一种选择是完全使用 Javascript 的 async-await 功能。
export default {
name: 'someComponent',
data() {
return {
...,
};
},
async destroyed() {
await someAsyncOperation()
}
}
我想问是否有任何方法可以在没有 async-await 的情况下(可能是承诺)来做到这一点。
【问题讨论】:
-
如果我可以问一下什么是反对 async/await 的?
-
没什么。这是一个很棒的功能。但是,我想知道如果我使用没有此功能的旧版本的 js(例如 ECMA 5)会怎样。我怎样才能让他们完成这项工作?
-
我认为使用
beforeDestroy生命周期钩子和旧版本的异步语法应该适合您的需要 -
您似乎认为 async/await 使异步调用同步。事实并非如此。代码仍然异步运行,Vue 不会等待它运行。
-
很确定它根本行不通;至少,它不会在销毁之前等待异步代码执行。但是如果你需要在旧浏览器上使用 async/await,为什么不使用 Babel 和 webpack 为你抽象出这个问题呢?
标签: javascript vue.js async-await