首页 > 解决方案 > Vue 组件方法中的错误-with-debounce 永远不会被报告

问题描述

在我正在处理的应用程序的一个 Vue 组件中,调用了一个方法 usinglodash.debounce以减少调用次数。但是我注意到,如果 debounced 方法内部发生任何错误,它不会报告给组件级别或应用级别的错误观察者。

有没有办法报告去抖方法中的错误?

组件方法:

methods: {
  doMethod: function() {
    throw new Error();
  },
  doMethodDebounce: _.debounce(function() {
    throw new Error();
  }, 100)
},

通过以下方式侦听错误:

在 App.vue 中:

errorCaptured() {
  alert('Error in App.vue');
},

在 main.js 中:

Vue.config.errorHandler = () => {
  alert("Error in main.js");
};

请参阅此演示中的运行示例。

标签: javascriptvue.jserror-handlingvuejs2vue-component

解决方案


我不完全确定为什么,但解决方法是将预期的函数体包装为$nextTick

methods: {
  doMethodDebounce: _.debounce(function() {
    this.$nextTick(() => {

      // your potentially error-throwing code here

    })
  }, 100)
}

演示


推荐阅读