Передать вызвавший обьект в 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 шт):

Автор решения: vsemozhebuty

Насколько я понял, вам нужно вызвать confirmationHandler() так, чтобы его this было объектом, в который разрешается Promise, возвращённая msg.channel.send(promptMessage)?

Если именно это нужно, можно так:

let prompt = await confirmationHandler.call(await msg.channel.send(promptMessage));

Не очень красиво, но ваш вариант не сработает, если у упомянутого объекта нет метода confirmationHandler().

Правда, по вашему вопросу не совсем понятно, должен ли prompt быть одновременно и this в confirmationHandler(), и возвращаемым значением.

→ Ссылка