angularjs 返回undefined:Angular

ggazkfy8  于 12个月前  发布在  Angular
关注(0)|答案(1)|浏览(122)

我正在尝试使用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)
   }
}


然而,我仍然得到同样的错误。我在这里做错了什么?

ycl3bljg

ycl3bljg1#

在你的例子中,似乎onmessage函数中的this是未定义的。这是因为onmessage函数创建了自己的上下文,而函数中的this并不引用外部作用域。
解决这个问题的一种方法是为onmessage使用箭头函数,它没有自己的this,并将从父作用域继承this。下面是如何修改代码:

let src = fetchEventSource('api link', {
  method: 'POST',
  ...
  onmessage: async (e) => {
    if(e.text.includes('[END]')){
      this.addAsArray(e.text)
    }
  }
});

字符串

相关问题