почему async внутри computed делает бесконечные циклы (vue)? - PullRequest
0 голосов
/ 23 декабря 2019

Мой вычисленный компонент выглядит следующим образом:

export default {
  computed: { 
    dataDoctorPerPage: async function () {
        const start = this.pagination.page * this.pagination.rowsPerPage - this.pagination.rowsPerPage;
        const end = start + this.pagination.rowsPerPage - 1;
        const doctors = this.dataDoctor
        const newDoctors = {}
        let key = 0
        for(let item in doctors) {
            if(key >= start && key <= end) {
                for (let i = 0; i < doctors[item].length; i++) {
                    const params = {
                        hospitalId: doctors[item][i].hospital_id,
                        doctorId: doctors[item][i].doctor_id,
                    }
                    await this.getDataSchedule(params) /* call async */
                    // console.log(this.dataSchedule)
                }
                newDoctors[item] = doctors[item]
            }
            key++
        }
        return newDoctors
    }
  }
}

Если вызываемый dataDoctorPerPage запустит скрипт,

await this.getDataSchedule(params) вызовет async / api через хранилище vuex. Моя проблема здесь. когда я звоню await this.getDataSchedule(params), он зацикливается без остановки

Мой магазин Vuex выглядит так:

const actions = {
  async getDataSchedule ({ commit }, payload) {
    const result = await api.getDataSchedule(payload)
    const items = result.data
    commit('setDataSchedule', { items: items })
  },
}

Как я могу решить эту проблему?

Не может ли незапустить async в computed?

1 Ответ

0 голосов
/ 23 декабря 2019

Вычислять не следует использовать async. Если вы хотите сделать это, вам нужна другая библиотека для этого. https://alligator.io/vuejs/async-computed-properties/

Но то, что вы хотите сделать, это использовать асинхронный метод (в компоненте или хранилище) и установить данные где-нибудь (в данных компонента или в состоянии хранилища), а затем получить ссылку на это вычисленное значение.

...