如何为多个嵌套调用添加异步等待

时间:2020-06-04 08:14:40

标签: nuxt.js

我正在使用访存挂钩。为了使获取挂钩正常工作,我需要为嵌套的多个调用添加asyncawait

在组件中,我使用了获取钩子

async fetch () {
    await this.$store.dispatch('pages/getPagesById', this.$route.params.id)
    await this.$store.dispatch('pages/getPage', this.$route.params.id)
  }
async getPagesById({ commit, state }, pageId) {
    commit('setLoading', true)
    await pages.findBy(pageId).then((response) => {
      const pagesId = response.data.page_item
      const queuesId = []
      const defaultTitles = []
      const breakingTitles = []
      const queryParams = {
        _sort: 'created_at:DESC',
        _limit: 10
      }
      pagesId.forEach((item, index) => {
        item.queue && item.queue.type === 'breaking' ? breakingTitles.push(item.title) : defaultTitles.push(item.title)
        if (item.queue) {
          queuesId.push(pages.findQueueById(item.queue.id))
        } else if (item.tags) {
          const tagsParams = Object.assign({}, queryParams, { tags: item.tags.id })
          queuesId.push(articles.findByTags(tagsParams))
        }
      })
      Promise.all(queuesId).then((response) => {
        const articleItemQueue = response.map((item, index) => {
          return item.data
        })
        commit('setdefaultTitles', defaultTitles)
        commit('setBreakingTitles', breakingTitles)
        commit('setPagesArticles', articleItemQueue)
        commit('setLoading', false)
      })
      commit('setLoading', false)
    })
  }

任何帮助都会很棒。

0 个答案:

没有答案