Я пытаюсь получить некоторую информацию с веб-страницы, используя request
, чтобы получить страницу, а затем cheerio
, чтобы пройти DOM к определенной части, которая мне нужна. Я повторяю этот процесс для нескольких элементов в массиве, используя array.forEach
, используя этот код:
const cheerio = require('cheerio');
const request = require('request');
var i = 0;
var rates = [];
['AUD', 'CAD'].forEach(function(currancy){
var url = "https://www.google.com/finance/converter?a=1&from=USD&to=" + currancy
request(url , function(error, res , body){
const $ = cheerio.load(body);
var temp = $('.bld');
var rate = temp.text();
console.log(rate);
rates[i]= rate;
i++;
})
});
console.log('done');
результат, который я ожидаю, выглядит примерно так:
1.31 AUD
1.28 CAD
done
но я получаю это:
done
1.31 AUD
1.28 CAD
можете ли вы сказать мне, почему array.forEach
не блокирует мой код?
forEach
s обрабатывает массив и для каждого элемента отправляет асинхронный запрос. Последний журнал выполняется до завершения запросов. - person Andrew Li   schedule 10.07.2017