BoredApe
BoredApe
  • 发布:2022-05-09 09:54
  • 更新:2024-09-23 15:51
  • 阅读:3965

addInterceptor 拦截器提供异步支持

分类:uni-app

需求背景

在开发中很多场景都会使用到Interceptor拦截器。例如:拦截请求、拦截uni API、权限控制。

原理解析

通过Interceptor实现,https://github.com/dcloudio/uni-app/blob/alpha/src/core/helpers/interceptor.js我们可以看到。

invoke可以接收一个promise。那么我们就可以在invoke中返回一个Promise来处理异步方法

uni.addInterceptor('navigateTo', {  
    invoke(args) {  
        return new Promise((resolve) => {   

                resolve(args);  

        });  
    },  
});

注意 invokepromise返回的invoke参数必须要传。

Demo

以拦截navigateTo方法为例,跳转之前需要从后台请求是否有权限

uni.addInterceptor('navigateTo', {  
    invoke(args) {  
        return new Promise((resolve) => {  
            // 模拟请求   
            setTimeout(() => {  
                args.url = '/pages/home/index';  
                resolve(args);  
            }, 2000);  
        });  
    },  
});
1 关注 分享
zZZ1Ma

要回复文章请先登录注册

百度绿色版

百度绿色版

有效,很棒!
2024-09-23 15:51
拓荒

拓荒

确实,不支持异步就有些鸡肋了
2024-04-09 16:24
m***@foxmail.com

m***@foxmail.com

应用启动的时候可以拦截吗?例如应用启动时默认跳转到页面A,但是发现用户权限不够需要跳转到页面B。这种情况应该如何拦截?
现在在APP.vue里面做权限判断,页面会先跳转到A,然后再跳转到B页面!
2023-06-19 20:28