if (!response.body) {
this.message[this.message.length-1].msg='ReadableStream not yet supported in this browser.';
throw new Error('ReadableStream not yet supported in this browser.');
}
const reader = response.body.getReader();
const decoder = new TextDecoder();
let result = '';
this.message[this.message.length-1].dot='⚪';
while (true) {
const { done, value } = await reader.read();
if (done) {
break;
}
result += decoder.decode(value, { stream: true });
if (!response.body) {
this.message[this.message.length-1].msg='ReadableStream not yet supported in this browser.';
throw new Error('ReadableStream not yet supported in this browser.');
}
const reader = response.body.getReader();
const decoder = new TextDecoder();
let result = '';
this.message[this.message.length-1].dot='⚪';
while (true) {
const { done, value } = await reader.read();
if (done) {
break;
}
result += decoder.decode(value, { stream: true });
// 处理流中的每一块数据,这里假设每块数据都是完备的 JSON 对象 const jsonChunks = result.split('\n').filter(line => line.trim());
//console.log(result)
for (const chunk of jsonChunks) {
try {
const data = JSON.parse(chunk);
//console.log(data.message.content)
this.message[this.message.length-1].msg+=data.message.content;
setTimeout(()=>{
this.scrollToBottom();
},50);
} catch (e) {
//this.message[this.message.length-1].msg=e;
// 处理 JSON 解析错误
//console.error('Failed to parse JSON:', e); }
}
// 清空 result 以便处理下一块数据 result = '';
}
} catch (error) {
if (error.name === 'AbortError') {
console.log('Stream aborted');
this.message[this.message.length-1].msg='Stream aborted';
} else {
console.error('Streaming error:', error);
this.message[this.message.length-1].msg='Stream error'+error;
}
}
this.message[this.message.length-1].dot='';
this.arequestData.messages.push({
role: 'assistant',//this.message[this.message.length-1].user,//"GPT", content: this.message[this.message.length-1].msg
})
setTimeout(()=>{
this.scrollToBottom();
},50);