Консольлоги сделанные внутри функции показывают наполненный массив. Консольлоги сделанные снаружи функции показывают пустые массивы. Оператор await как раз ждёт пока метод .map() вернёт результат и тогда записывает его в глобал переменную dataLength. Как мне наполнить этот массив? Как я могу ретурнить результат?
const fetch = require("node-fetch");
let mainData = [];
let dataLength = [];
(async () => {
const response = await fetch('https://jsonplaceholder.typicode.com/users');
const json = await response.json();
mainData = json;
dataLength = await mainData.map(item => item.name.length);
console.log(dataLength);
console.log(mainData);
// mainData.forEach(function (item, index, array) {
// dataLength = item.name.length;
// console.log(dataLength)
// });
})();
console.log(dataLength);
console.log(mainData);
В основе Node.js лежит событийно-ориентированное и асинхронное (или реактивное) программирование с неблокирующим вводом/выводом.Выражениесобытийно-ориентированноеговорит о том, что вы можете только реагировать на событие. Пишете вы в глобал, не пишете, не важно. Данные доступны только после события. Ваше желание продиктовано архитектурой вашего приложения. Попробуйте пересмотреть ее. – Yugofx Jun 10 '20 at 19:39