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()
做什么?有没有可能是异步的?