uni-app icon indicating copy to clipboard operation
uni-app copied to clipboard

uni.addInterceptor 无法正确处理多个拦截器异步的链式调用

Open fhaskla opened this issue 6 months ago • 4 comments

发行方式

小程序

具体平台

微信小程序

开发环境

Windows

项目创建方式

CLI命令行

依赖版本

{ "name": "hm-shopping", "version": "0.1.0", "private": true, "dependencies": { "@vant/weapp": "^1.11.7", "vue": "^2.6.14", "vuex": "^3.6.2" }, "devDependencies": { "@vue/cli-service": "^5.0.8", "postcss-px-to-viewport": "^1.1.1" } }

问题描述

uni.addInterceptor('switchTab', { invoke(options) { return new Promise((resolve) => { setTimeout(() => { console.log('s1-invoke') resolve(options) }, 3000) }) }, success(res) { console.log('s1-success') } }) uni.addInterceptor('switchTab', { invoke(options) { return new Promise((resolve) => { setTimeout(() => { console.log('s2-invoke') resolve(options) }, 3000) }) }, success(res) { console.log('s2-success') } } ) 这段代码会在打印's1-invoke'后结束,后续的's2-invoke','s1-success','s2-success'都被阻断了,而且控制台不会有任意报错

重现步骤

使用拦截器拦截任意一个 api,并且添加多个异步拦截器就可以复现这个问题

期望行为

可以正确处理promise的链式调用,先打印's1-invoke'再打印's2-invoke','s1-success','s2-success',当然我不知道uniapp是不是不支持我使用多个异步链式调用,但是我在源代码里其实是有看到类似的多个异步链式调用处理的

实际行为

No response

截图或录屏

我在b站发布了一个视频进行更详细的问题说明,以下是地址:【uniapp 的拦截器有 bug 的。。。】 https://www.bilibili.com/video/BV1oeGCzwE28/?share_source=copy_web&vd_source=9fcc32460033b08131c59254afaf7a1c

fhaskla avatar Apr 29 '25 06:04 fhaskla