如何更改 jquery Deferred 以使用 Vue nexttick?

How to change jquery Deferred to use Vue nexttick?

我需要更改此设置,因为我已阅读 nextTick 与 deferred 相比是更好的选择。

这是运行良好的原始代码:

methods: {
    ...mapActions(['fetchOverdraftLogs', 'setOverdraftFilters', 'fetchUserEventsCsvFile']),
},
  computed: {
    ...mapGetters(['getOverdraftLogs'])
  },
...
        loadData: filters => {
          const d = $.Deferred()
          this.fetchOverdraftLogs({ params: this.filtersToSend(filters) })
            .then(res => {
              d.resolve(this.getOverdraftLogs)
              this.setFilterValues()
            })
          return d.promise()
        })
        }

但是,我无法使用 nextTick 进行修改:

loadData: filters => {
  this.fetchOverdraftLogs({ params: this.filtersToSend(filters) })
  this.$nextTick(() => {
    this.setFilterValues()
    this.getOverdraftLogs
  })
}

我需要确保网格在调用 API 之后从状态中读取数据。

你能帮忙吗?

延迟模式通常是一种反模式,尤其是对于 ES 承诺。它不是 nextTick 的替代品。承诺已经是异步的,立即解决的承诺提供了一个小的延迟。 nextTick 提供足够大的延迟 DOM 进行更新。

nextTick 支持 promises 但这里不需要。

应该是:

    loadData: filters => {
      return this.fetchOverdraftLogs({ params: this.filtersToSend(filters) })
        .then(() => {
          this.setFilterValues()
          return this.getOverdraftLogs;
        })
    }

Vuex 动作不应该 return 它们操作的数据,所以不应该有 res