Я пытаюсь выполнить итерацию и распечатать по порядку массив в Javascript, который содержит заголовок 2 событий, которые я получил в результате просмотра веб-страниц на веб-сайте, но он распечатывается в беспорядке. Я знаю, что Javascript асинхронный, но я новичок в этом мире асинхронизма. Как я могу реализовать цикл для , чтобы распечатать массив по порядку и дать настроенную информацию?
agent.add('...')
похоже на console.log('...')
. Я делаю чат-чат с DialogFlow и NodeJs 8
, но это сейчас не важно. Я использовал console.log () в ответ только для отладки.
Я попробовал следующее:
async function printEvent(event){
agent.add(event)
}
async function runLoop(eventsTitles){
for (let i = 0; i<eventsTitles.length; i++){
aux = await printEvent(eventsTitles[i])
}
}
Но я получил эту ошибку Ошибка неожидана await
внутри цикла без ожидания в цикле
async function showEvents(agent) {
const cheerio = require('cheerio');
const rp = require('request-promise');
const options = {
uri: 'https://www.utb.edu.co/eventos',
transform: function (body) {
return cheerio.load(body);
}
}
return rp(options)
.then($ => {
//** HERE START THE PROBLEM**
var eventsTitles = [] // array of event's titles
agent.add(`This mont we have these events available: \n`)
$('.product-title').each(function (i, elem) {
var event = $(this).text()
eventsTitles.push(event)
})
agent.add(`${eventsTitles}`) // The array prints out in order but if i iterate it, it prints out in disorder.
// *** IMPLEMENT LOOP FOR ***
agent.add(`To obtain more info click on this link https://www.utb.edu.co/eventos`)
return console.log(`Show available events`);
}).catch(err => {
agent.add(`${err}`)
return console.log(err)
})
}
Я хотел бы всегда распечатывать заголовок события № 1 и после заголовка события № 2. Примерно так:
events titles.forEach((index,event) => {
agent.add(`${index}. ${event}`) // remember this is like console.log(`${index}. ${event}`)
})
Спасибо за любую помощь и объяснения!