需求背景
在开发中很多场景都会使用到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);
});
},
});
注意 invoke
中promise
返回的invoke
参数必须要传。
Demo
以拦截navigateTo
方法为例,跳转之前需要从后台请求是否有权限
uni.addInterceptor('navigateTo', {
invoke(args) {
return new Promise((resolve) => {
// 模拟请求
setTimeout(() => {
args.url = '/pages/home/index';
resolve(args);
}, 2000);
});
},
});
3 个评论
要回复文章请先登录或注册
百度绿色版
拓荒
m***@foxmail.com