Javascript 在另一个函数中调用函数

Javascript 在另一个函数中调用函数,javascript,function,typescript,server,Javascript,Function,Typescript,Server,我有一个功能publicRooms,用于显示服务器上的公共讨论。我想将此数据用于我创建的另一个函数addNewMessageNewThread: matrixClient.publicRooms(function(err, data) { console.log("Public Rooms: %s", JSON.stringify(data)); console.log("data", data.chunk[0].aliases[0]); this.addNewMessageNew

我有一个功能
publicRooms
,用于显示服务器上的公共讨论。我想将此数据用于我创建的另一个函数
addNewMessageNewThread

matrixClient.publicRooms(function(err, data) {
  console.log("Public Rooms: %s", JSON.stringify(data));
  console.log("data", data.chunk[0].aliases[0]);

  this.addNewMessageNewThread({
    'id': 'paul',
    'author': 'Paul Manip',
    'body': '  ?'
  });
});
当我这样做时,他告诉我他不知道这个函数:

错误类型错误:无法读取的属性“addNewMessageNewThread” 未定义

当我在函数外部测试这个函数时,它是有效的

///EDIT///strong>

这是我的函数
addNewMessageNewThread()

addNewMessageNewThread(objMessage: any): void {

    const newUser: User      = new User(objMessage.author, objMessage.site);
    const newThread: Thread = new Thread(objMessage.id, [newUser],objMessage.title);
    const newMessage = new Message(objMessage);

    objMessage.date = moment().toDate();

    newThread.arrayMessages.push(newMessage);
    newThread.messages = Observable.of(newThread.arrayMessages);

    newThread.lastMessage = newMessage;

    objMessage.thread = newThread;
    this.addThread(newThread);
}

不要调用
this.addNewMessageNewThread
尝试使用
matrixClient.addNewMessageNewThread

引用回调的上下文

如果此
addNewMessageNewThread
不属于
matrixClient
(猜测),则在调用
matrixClient.publicRooms()
之前,分配:

var that = this;

并在回调中使用
that
而不是
this

而不是调用
this.addNewMessageNewThread
尝试使用
matrixClient.addNewMessageNewThread

引用回调的上下文

如果此
addNewMessageNewThread
不属于
matrixClient
(猜测),则在调用
matrixClient.publicRooms()
之前,分配:

var that = this;

并在回调中使用
that
而不是
this
您应该传递上下文
this

matrixClient.publicRooms(function(err, data) {
  console.log("Public Rooms: %s", JSON.stringify(data));
  console.log("data", data.chunk[0].aliases[0]);

  this.addNewMessageNewThread({
    'id': 'paul',
    'author': 'Paul Manip',
    'body': '  ?'
  });
}, this); 
或用于使用父上下文:

matrixClient.publicRooms((err, data) => {
  console.log("Public Rooms: %s", JSON.stringify(data));
  console.log("data", data.chunk[0].aliases[0]);

  this.addNewMessageNewThread({
    'id': 'paul',
    'author': 'Paul Manip',
    'body': '  ?'
  });
}); 

您应该传递上下文

matrixClient.publicRooms(function(err, data) {
  console.log("Public Rooms: %s", JSON.stringify(data));
  console.log("data", data.chunk[0].aliases[0]);

  this.addNewMessageNewThread({
    'id': 'paul',
    'author': 'Paul Manip',
    'body': '  ?'
  });
}, this); 
或用于使用父上下文:

matrixClient.publicRooms((err, data) => {
  console.log("Public Rooms: %s", JSON.stringify(data));
  console.log("data", data.chunk[0].aliases[0]);

  this.addNewMessageNewThread({
    'id': 'paul',
    'author': 'Paul Manip',
    'body': '  ?'
  });
}); 

addNewMessageNewThread()做什么?它是异步的吗?
addNewMessageNewThread()
做什么?有没有可能是异步的?