Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Vuejs中尝试使用异步/等待捕获_Javascript_Vue.js_Vuejs2_Nuxt.js - Fatal编程技术网

Javascript 在Vuejs中尝试使用异步/等待捕获

Javascript 在Vuejs中尝试使用异步/等待捕获,javascript,vue.js,vuejs2,nuxt.js,Javascript,Vue.js,Vuejs2,Nuxt.js,我正在使用VueJS/Nuxt和Vuex存储,并且定义了以下方法: async UpdateData () { try { await this.$store.dispatch('updateMyData', this.data) successMsg({ message: 'Data updated successfully' }) } catch (e) { errorMsg({ message: 'Some error' }) } } 问题是我尚未创建

我正在使用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]未知操作类型:updateMyData”

但是,仍然会执行successsg,我会收到消息“数据更新成功”

我的假设是如果等待。。。如果失败,它将转到捕捉块


你能帮我解释一下我的代码有什么问题,以及我如何纠正它吗。

该错误不是一个实际的承诺错误,它是Vuex发出的警告,表示“updateMyData”操作尚未在Vuex存储中的任何位置注册。该消息来自一个简单的控制台。log/error/warn而不是抛出或拒绝,这就是为什么它不会在您的函数中失败。

该错误不是实际的promise错误,它是Vuex发出的警告,表示“updateMyData”操作尚未在Vuex存储中的任何位置注册。消息来自一个简单的console.log/error/warn,而不是throw或reject,这就是为什么它不会在这里的函数中失败。

如果等待表达式没有返回承诺对象,它会将传入的内容转换为已解析的承诺。这仅仅意味着您的未定义函数将立即返回,就像它已解析一样。因此,它不会拒绝,等待也不会抛出

如果wait运算符后面的表达式的值不是承诺,则它将转换为已解析的承诺


这来自于这里:

在等待表达式不返回承诺对象的情况下,它将传入的内容转换为已解析的承诺。这仅仅意味着您的未定义函数将立即返回,就像它已解析一样。因此,它不会拒绝,等待也不会抛出

如果wait运算符后面的表达式的值不是承诺,则它将转换为已解析的承诺


这来自这里:

你熟悉承诺吗?wait/async基本上是一种使用承诺的新语法。如果这段代码的承诺版本没有失败,等待版本也不会失败。我没有太多使用承诺。但是看看上面,你为什么认为它没有捕捉到错误?@acdcjunior-你读过这个问题吗?也就是说,语句直接放在代码块下面。没有坏处。都是想帮忙。所以请支持我的答案——因为这毕竟是最好的答案——你熟悉承诺吗?wait/async基本上是一种使用承诺的新语法。如果这段代码的承诺版本没有失败,等待版本也不会失败。我没有太多使用承诺。但是看看上面,你为什么认为它没有捕捉到错误?@acdcjunior-你读过这个问题吗?也就是说,语句直接放在代码块下面。没有坏处。都是想帮忙。所以请投票给我的答案-因为这毕竟是最好的答案:-对-打问号的原因。金达罗的代码可能是正确的。我删除了它,因为它与问题没有直接关系。虽然dispatch通常会返回一个承诺,但当操作不存在时,它会返回undefined,只是测试了它。你一针见血,+1!右-问号的原因。金达罗的代码可能是正确的。我删除了它,因为它与问题没有直接关系。虽然dispatch通常会返回一个承诺,但当操作不存在时,它会返回undefined,只是测试了它。你一针见血,+1!这意味着,如果我创建了该操作,并且该操作由于某种原因返回错误,那么该错误将被捕获?我相信是这样,因为$dispatch函数正在返回该操作返回SSO的承诺,这意味着如果我创建了该操作,并且该操作由于某种原因返回错误,那么错误会被捕获吗?我相信是这样,因为$dispatch函数正在返回操作返回的承诺