弈凌
弈凌
  • 发布:2023-02-27 18:41
  • 更新:2025-01-22 09:57
  • 阅读:918

【报Bug】uni.addInterceptor示例的returnValue是无效的

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 11 家庭中文版 21H2

HBuilderX类型: 正式

HBuilderX版本号: 3.6.18

浏览器平台: Chrome

浏览器版本: 95内核

项目创建方式: HBuilderX

操作步骤:
uni.addInterceptor({  
  returnValue(args) {  
    // 只返回 data 字段  
    console.log(args.data)  
    return args.data  
  }  
})

预期结果:

args.data是响应数据

实际结果:

args.datanull

bug描述:

官方示例如下:

uni.addInterceptor({  
  returnValue(args) {  
    // 只返回 data 字段  
    console.log(args.data)  
    return args.data  
  }  
})

args.datanull

args打印的结果如附件图,但里面的属性是.不出来的。

2023-02-27 18:41 负责人:无 分享
已邀请:
9***@qq.com

9***@qq.com

看看args是什么
如果是Promise {<pending>}
这里要改一下
uni.addInterceptor({
async returnValue(args) {
let res = await args
return res.data
}
})

  • 弈凌 (作者)

    文档已补充官方示例出处与打印结果

    2023-03-11 22:03

DCloud_UNI_WZF

DCloud_UNI_WZF

确认下是否是数据问题,如确认框架问题,提供可复现demo,谢谢

  • 弈凌 (作者)

    文档已补充官方示例出处与打印结果

    2023-03-11 22:03

  • 弈凌 (作者)

    https://gitee.com/yl-yue/uni-bug.git 你好,工程示例

    2023-03-20 18:26

3***@qq.com

3***@qq.com

一样也碰到了

夜散点炽

夜散点炽 - 移动开发

这是我测试出来的,资料找不到,还有APP端的,因为我的工具不能断点调试vue3页面,没法测试,希望对你有帮助
uni.addInterceptor('request', {
invoke(args){//请求前触发,true放行,false阻断
return true;
},
returnValue(args){//实现分流,在成功和失败前执行,
if(args){ //当invoke返回值为false时这边为null,所以要判断空指针
// #ifdef MP-WEIXIN //微信小程序
args.onHeadersReceived((res)=>{
if(res.statusCode==200){
//什么都不执行则执行成功回调success
}else{
args.abort(); //执行失败回调fail
}
})
//#endif
// #ifdef H5 //h5
args._xhr.onreadystatechange = (res) =>{
if(args._xhr.readyState==4){//
if(res.target.status==200){
args._xhr.onload(); //执行成功回调success
}else{
args._xhr.onerror(); //执行失败回调fail
}
}
}
// #endif
}
},
success(res,obj){
//成功回调
},
fail(e, obj){
//失败回调fail
}
});

要回复问题请先登录注册