如何确保Vue和另一个接口同时返回结果后才执行后续步骤?

2026-04-03 01:181阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计442个文字,预计阅读时间需要2分钟。

如何确保Vue和另一个接口同时返回结果后才执行后续步骤?

使用`next`只能调用一次,若需等待多个异步操作,可以使用`Promise.all`解决。等所有异步操作都返回结果后再执行`next`:javascriptbeforeRouteEnter(to, from, next) { // 使用Promise.all等待所有异步Promise都resolve后再继续执行 Promise.all([ promise1, promise2, // ...更多异步操作 ]).then(()=> { next(); });}

next 只能調用一次,這邊可以用 Promise.all 解決,等待兩個異步操作都返回結果後再 next:

如何确保Vue和另一个接口同时返回结果后才执行后续步骤?

beforeRouteEnter (to, from, next) { // Promise.all 會等到數組內的 Promise 都 resolve 後才會繼續跑(then) Promise.all([ main._base({ methodName: 'QueryProductInfo', productId: to.params.id }), main._base({ methodName: 'QueryProductReview', type: '0', index: '0', count: '2', productId: to.params.id }) ]) .then( result => next( vm => { // 執行結果會按照上面順序放在 result 數組內,所以 result[0],代表第一個函數的 resolve 結果 vm.product = result[0].data.product vm.shop = result[0].data.shop vm.evalData = result[1].data })) }

补充知识:vue 中多接口请求时 按顺序执行接口使用await async

我就废话不多说了,大家还是直接看代码吧~

async getSelectOrg () { console.log('----1') return axiosPost('/api/uum/org/orglist', { accessToken: localStorage.token, option: true}).then(response => { this.options_grade = [] if (response.data.data.length > 1) { this.options_grade.push({ value: '-1', label: '全部' }) this.formInline.organization = '-1' } else if (response.data.data.length === 1) { this.formInline.organization = response.data.data[0].orgCode } for (let i = 0; i < response.data.data.length; i++) { let tmp = {} tmp.value = response.data.data[i].orgCode tmp.label = response.data.data[i].orgName this.options_grade.push(tmp) } console.log('----2') }).catch(err => { console.log(err) }) }, async getSelect () { await this.getSelectOrg() console.log('----3') this.searchInfo() } }, mounted () { let that = this window.onresize = function () { // 定义窗口大小变更通知事件 // _this.screenWidth = document.documentElement.clientWidth // 窗口宽度 that.clientHeight = document.documentElement.clientHeight // 窗口高度 } this.getSelect() },

以上这篇vue等两个接口都返回结果再执行下一步的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。

本文共计442个文字,预计阅读时间需要2分钟。

如何确保Vue和另一个接口同时返回结果后才执行后续步骤?

使用`next`只能调用一次,若需等待多个异步操作,可以使用`Promise.all`解决。等所有异步操作都返回结果后再执行`next`:javascriptbeforeRouteEnter(to, from, next) { // 使用Promise.all等待所有异步Promise都resolve后再继续执行 Promise.all([ promise1, promise2, // ...更多异步操作 ]).then(()=> { next(); });}

next 只能調用一次,這邊可以用 Promise.all 解決,等待兩個異步操作都返回結果後再 next:

如何确保Vue和另一个接口同时返回结果后才执行后续步骤?

beforeRouteEnter (to, from, next) { // Promise.all 會等到數組內的 Promise 都 resolve 後才會繼續跑(then) Promise.all([ main._base({ methodName: 'QueryProductInfo', productId: to.params.id }), main._base({ methodName: 'QueryProductReview', type: '0', index: '0', count: '2', productId: to.params.id }) ]) .then( result => next( vm => { // 執行結果會按照上面順序放在 result 數組內,所以 result[0],代表第一個函數的 resolve 結果 vm.product = result[0].data.product vm.shop = result[0].data.shop vm.evalData = result[1].data })) }

补充知识:vue 中多接口请求时 按顺序执行接口使用await async

我就废话不多说了,大家还是直接看代码吧~

async getSelectOrg () { console.log('----1') return axiosPost('/api/uum/org/orglist', { accessToken: localStorage.token, option: true}).then(response => { this.options_grade = [] if (response.data.data.length > 1) { this.options_grade.push({ value: '-1', label: '全部' }) this.formInline.organization = '-1' } else if (response.data.data.length === 1) { this.formInline.organization = response.data.data[0].orgCode } for (let i = 0; i < response.data.data.length; i++) { let tmp = {} tmp.value = response.data.data[i].orgCode tmp.label = response.data.data[i].orgName this.options_grade.push(tmp) } console.log('----2') }).catch(err => { console.log(err) }) }, async getSelect () { await this.getSelectOrg() console.log('----3') this.searchInfo() } }, mounted () { let that = this window.onresize = function () { // 定义窗口大小变更通知事件 // _this.screenWidth = document.documentElement.clientWidth // 窗口宽度 that.clientHeight = document.documentElement.clientHeight // 窗口高度 } this.getSelect() },

以上这篇vue等两个接口都返回结果再执行下一步的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。