Давайте разберемся.Похоже, вы понимаете, что pullBatch
- это асинхронная функция, и поэтому ее вызов вернет обещание, созданное взаимодействием twitterRest.
Проблема в том, что ваш вызов pullBatch
внутри цикла for не разрешитсяэти обещания (что, кажется, то, что вы хотите сделать).Самый простой способ - использовать await
для currentBatch
, но, как вы пытались, вы получили зарезервированную ошибку.По сути, вам просто нужно сделать pullTimeline
асинхронным следующим образом:
async pullTimeline(){
...
Просто поймите, что когда вы это сделаете, pullTimeline
теперь является асинхронной функцией, которая также будет возвращать обещание.Поэтому, чтобы использовать эту функцию, вам нужно либо использовать .then()
, например:
pullTimeline().then(timeLine => {
// do something with your timeline here
})
Или, если вы используете ее в другой асинхронной функции, вы можете использовать await.
const timeLine = await pullTimeline() // must be inside async function
По сути, в какой-то момент в вашей цепочке вызовов вам придется разрешить обещание, используя .then()
, или игнорировать обещание верхнего уровня, выполнив асинхронную функцию верхнего уровня.Например:
async useTimeline() {
const timeLine = await pullTimeline()
// do something with your timeline
}
// call the function above, and just disregard its promise
useTimeLine()
Только не забудьте где-нибудь обрабатывать ошибки.Либо используйте .catch()
в своем обещании высшего уровня, либо используйте try / catch
вокруг любого из ваших ожидающих вызовов.