У меня есть код ниже для доступа к сеансам кино с сайта кино.Я зацикливаюсь, используя цикл while для получения сеансов фильма.
И я намереваюсь добавить сеансы внутри цикла в массив sessionResults
, который объявлен вне цикла while.
R.
относится к библиотеке Рамды
let page // passed as an argument to the outer function
let sessionResults = [];
while (currentCinemaIndex < cinemaList.length) {
await page.goto("www.fakeurl.com");
const _movies = await movies({ page });
//Get the sessions for each @_movies
const _movieSessions = await _movies.map(
async (_movie, index) => {
//sessions() returns an array of objects
const res = (await sessions({ page: page }, index + 1)).map(session => {
return Object.assign({}, _movie, session);
});
return res;
},
{ page }
);
//!!! AREA OF CONCERN
console.log(_movieSessions); // array of promises
Promise.all(_movieSessions).then(p => {
sessionResults = R.concat(R.flatten(p), sessionResults);
// console.log(sessionResults); // concatenated array
});
console.log(sessionResults); // []
//while loop logic
currentCinemaIndex = //increment currentCinemaIndex
limit =// set new limit
Если вы посмотрите на //!!! AREA OF CONCERN
, я задокументировал значение sessionResults
в разных местах.
Не могли бы вы сообщить, почему значение sessionResults
не переносится наружу?Promise.all()