Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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
Vue.js Vue JS中的错误处理-未捕获错误_Vue.js - Fatal编程技术网

Vue.js Vue JS中的错误处理-未捕获错误

Vue.js Vue JS中的错误处理-未捕获错误,vue.js,Vue.js,我有以下代码: fooService.update(this.bar).then( this.$emit('updated', this.updatedBar),).catch(err => {... 如果遇到错误,则不会捕获该错误。如果我将代码更改为: fooService.update(this.bar).then(x => {this.$emit('updated', this.updatedBar);}).catch(err => {... 然后捕获错误并按预期显示

我有以下代码:

fooService.update(this.bar).then( this.$emit('updated', this.updatedBar),).catch(err => {...
如果遇到错误,则不会捕获该错误。如果我将代码更改为:

fooService.update(this.bar).then(x => {this.$emit('updated', this.updatedBar);}).catch(err => {...
然后捕获错误并按预期显示。有谁能向我解释一下发生了什么事,以及为什么它会这样

编辑

基础服务代码:

function updateBar(bar) {
  return $http.put(`/api/bar/${bar.Id}`, bar);
}

因此,我仍然认为错误发生在
this.$emit
中,原因是

fooService.update(this.bar).then( this.$emit('updated', this.updatedBar),).catch(err => {
当您将该函数的响应设置为
时,它必须首先计算
this.$emit
,然后计算
,而不是调用本身

它这样做的证据

函数emit(){
console.log('emit')
}
var承诺=新承诺(功能(解决、拒绝){
设置超时(()=>{
console.log('承诺完成')
拒绝();
}, 1000)
})

promise.then(emit()).catch(function(){console.log('carry on');})
为什么要将
await
语法与
promise
语法结合起来?@Cristy说来也很奇怪,我知道有人也这么做,它最终会忽略wait,因为它会执行
,虽然我假设它并没有完全忽略它。为了冒险猜测,我会说,因为在第一个示例中,
。然后,
没有被传递一个function@Cristy-修改了代码,无论如何处理都会发生同样的情况。@Leonidas199x谢谢,我无法让它继续复制,但无论如何,你应该用第二种方式来做。谢谢你花时间来做这件事,真的很感激。这基本上回答了我的问题。