#javascript #node.js #twitter #async-await
#javascript #node.js #Twitter #async-await
Вопрос:
Я пытаюсь получить данные потока Twitter, используя nodejs
и twit
package .
Вот код, который я нашел в учебнике:
var stream = T.stream('statuses/filter', { track: 'vscode' });
stream.on('tweet', function (tweet) {
console.log(tweet);
});
Вот что я попробовал в качестве его эквивалента в async-await
формате:
private streamPublicTweets = async (request:Request, response:Response)=>{
const stream: any = await this.T.stream('statuses/filter', { track: 'vscode' });
const data = await stream.on('tweet');
console.log(data)
}
Я получаю эту ошибку, которая очень ожидаема.
UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_ARG_TYPE]: The "listener" argument must be of type Function. Received type undefined
Как мне исправить эту проблему в моем коде?
Комментарии:
1. вы не можете ожидать только того, что является асинхронным…. вы можете ожидать обещания — ни одна из функций, которые вы
await
возвращаете, не возвращает обещания — и в первом примере кода будет регистрироваться любой твит (1 или более), код, который вы пытались, если бы это было возможно, был бы только консольным. запишите первый твит2. Ошибка связана с тем, что
.on
должно быть как минимум два аргумента: «событие» и функция слушателя — вы не можете предоставить функцию слушателя, следовательно, этоundefined
и, следовательно, ошибка — честно говоря, не все можно превратить в обещания — и это один из примеров того, чтоОбещания не соответствуют цели