我正在使用访存挂钩。为了使获取挂钩正常工作,我需要为嵌套的多个调用添加async
和await
。
在组件中,我使用了获取钩子
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)
})
}
任何帮助都会很棒。