我正在使用VueJS / Nuxt和Vuex商店,我定义了以下方法:
async UpdateData () {
try {
await this.$store.dispatch('updateMyData', this.data)
successMsg({ message: 'Data updated successfully' })
} catch (e) {
errorMsg({ message: 'Some error' })
}
}
问题是我还没有创建动作'updateMyData',所以在我的控制台中我看到错误'[vuex] unknown action type: updateMyData'
但是,successMsg()
仍然执行,我收到消息'数据已成功更新'。
我的假设是,如果等待......失败,它将转到catch块。
请帮助我解决我的代码有什么问题以及如何纠正它。
答案 0 :(得分:2)
该错误不是实际的承诺错误,这是来自Vuex的警告,说'updateMyData'
操作尚未在Vuex商店中的任何位置注册。该消息来自一个简单的console.log(/ error / warn),而不是throw
或reject()
,这就是为什么它在你的函数中没有失败的原因。
答案 1 :(得分:1)
如果await表达式没有返回Promise对象,它会将传入的内容转换为“已解析的promise”。这只是意味着您的未定义函数会立即返回,就像它已解决一样。因此,它不会拒绝而await
不会抛出。
如果await运算符后面的表达式的值不是Promise,则将其转换为已解析的Promise。
这来自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await#Description