uni.addInterceptor 无法正确处理多个拦截器异步的链式调用
- Dominant language
- JavaScript
- Stars
- 41.6k
- Forks
- 3.7k
- Avg merge
- 7h 6m
- Merged PRs (30d)
- 6
Description
### 发行方式
小程序
### 具体平台
微信小程序
### 开发环境
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
Contributor guide
Assessment
This issue has not been assessed yet.