Я упускаю что-то очевидное. Используя Office. js с TypeScript, при попытке выполнить метод, предоставленный параметру обратного вызова некоторых функций, таких как makeEwsRequestAsync(data, callback)
, любые локальные функции (или переменные, в этом отношении), вызываемые в этом callback()
, возвращаются неопределенными, что приводит к "xyz Is not a function
" ошибки.
Я предполагаю, что это связано с изменением this
при выполнении в контексте функции makeEwsRequestAsync(data, callback)
. Как мне go передать эти функции или параметры явно, без this
? Или я неверен в этом предположении, и что-то еще вызывает эту проблему?
sendRequest() {
Office.context.mailbox.makeEwsRequestAsync(
this.getSubjectRequest(Office.context.mailbox.item.itemId), this.callback);
}
callback(asyncResult) {
let result = asyncResult.value;
//Result processing happens here
// \/ This throws "PostFile is not a function"
this.PostFile(base64String);
}
PostFile(base64String: string) {
//POST happens here
}
Я также попытался использовать необязательный параметр "userContext" makeEwsRequestAsync
следующим образом:
outerThis: thisService
sendRequest(folderId: string) {
this.folderId = folderId;
Office.context.mailbox.makeEwsRequestAsync(
this.getSubjectRequest(Office.context.mailbox.item.itemId), this.callback, this.outerThis);
}
И затем извлекает контекст через asyncResult.context
в обратном вызове, но контекст не заполняется, как ожидалось, и возвращает undefined
. Фактически единственными свойствами в объекте «asyncResult» являются «значение» и «статус» вместо «значение» и «контекст».
Заранее благодарен за любую помощь