Передать вызвавший обьект в this вызванной функции
Я видел раньше похожий код:
let prompt = await msg.channel.send(promptMessage).confirmationHandler();
send возвращает Promise с обьектом отправленного сообщения, к которому потом можно прикрепить реакции или просто получить его id. Я хотел отправить его прямиком в следующую функцию и я видел подобное раньше, где обьект до . (send(promptMessage).) можно было вызвать прямиком из this в следующей функции.
confirmationHandler это функция возвращающая Proise, начинается так:
function confirmationHandler() {
return new Promise(async (resolve, reject) => {
//add reactions first
await this.react('✅'); //по сути this = prompt в моем понимании
await this.react('❌');
Ошибка на первом же this ибо не был передан:
TypeError: this.react is not a function
Мне кажется нужно использовать prototype но я не совсем понимаю как это делать в моем случае.
Ответы (1 шт):
Насколько я понял, вам нужно вызвать confirmationHandler() так, чтобы его this было объектом, в который разрешается Promise, возвращённая msg.channel.send(promptMessage)?
Если именно это нужно, можно так:
let prompt = await confirmationHandler.call(await msg.channel.send(promptMessage));
Не очень красиво, но ваш вариант не сработает, если у упомянутого объекта нет метода confirmationHandler().
Правда, по вашему вопросу не совсем понятно, должен ли prompt быть одновременно и this в confirmationHandler(), и возвращаемым значением.