我正在尝试使用SSE订阅API调用,
addAsArray(message){
array.push(message)
}
字符串
SSE的名称:
let src = fetchEventSource('api link', {
method: 'POST',
...
async onmessage(e){
if(e.text.includes('[END]')){
this.addAsArray(e.text)
}
}
型
但是,我得到这个错误:TypeError: Cannot read properties of undefined (reading 'addAsArray')
我理解到xdc函数可能需要await
,因此我尝试这样做
async addAsArray(message){
array.push(message)
}
型
SSE的名称:
let src = fetchEventSource('api link', {
method: 'POST',
...
async onmessage(e){
if(e.text.includes('[END]')){
await this.addAsArray(e.text)
}
}
型
然而,我仍然得到同样的错误。我在这里做错了什么?
1条答案
按热度按时间ycl3bljg1#
在你的例子中,似乎onmessage函数中的this是未定义的。这是因为onmessage函数创建了自己的上下文,而函数中的this并不引用外部作用域。
解决这个问题的一种方法是为onmessage使用箭头函数,它没有自己的this,并将从父作用域继承this。下面是如何修改代码:
字符串