https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html
在未执行onStopRequestTask停止监听流数据函数前,请求是正常能触发wx.request的success/fail/compile回调,
在某个时机执行了onStopRequestTask后,再次发送请求时就不触发wx.request的success/fail/compile回调,
尝试了开发版 1.06.2502142 和 最新稳定版 1.06.2412050,降到1.06.2402040版本则正常触发,其他版本没有测试
const setChat = async (request) => {
const listener = (res) => {
const arrayBuffer = res.data;
const uint8Array = new Uint8Array(arrayBuffer);
let text = new TextEncoding.TextDecoder('utf-8').decode(uint8Array);
const str = text.split('data:');
str.forEach((item) => {
if (item) {
// 映射处理事件类型
const handler = handlers[request.data.modelType];
try {
handler(JSON.parse(item)); // 执行处理事件
} catch (e) {}
}
});
};
requestTask.value = uni.request({
...request,
complete: () => {
// 请求完成,停止监听并再计算一次滚动高度
requestTask.value.offChunkReceived();
emit('update:outputing', false);
setTimeout(() => {
nextTick(() => {
onScrollBottom();
// 推进评价
if (list.value[list.value.length - 1].needEvaluate) onPushRecommend();
});
}, 500);
}
});
// 这里监听消息
requestTask.value.onChunkReceived(listener);
};
// 停止监听流数据
const onStopRequestTask = () => {
// 停止监听
requestTask.value.offChunkReceived();
// 取消请求
requestTask.value.abort();
};
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
一样出现这个问题,在真机上正常,模拟器中从某个页面跳转至流式请求的页面执行请求就会出现不触发回调,同时控制台出现[memory-leak] triggerOnEvent called on a deprecated instance