Почему ARR не определена, хотя функция возвращает массив? [дублировать]Javascript

Форум по Javascript
Anonymous
Почему ARR не определена, хотя функция возвращает массив? [дублировать]

Сообщение Anonymous »

Код: Выделить всё

const randomGIFFunc = async function(dirname) {
const dirPath = 'src/gifs/' + dirname;
fs.readdir(dirPath, (err, files) => {
if (err) {
console.log('Error reading directory: ', err );
return;
}

const randomIndex = Math.floor(Math.random() * files.length);
const randomGIFname = files[randomIndex];
const randomGIFpath = dirPath + '/' + randomGIFname;

console.log('arr in function: ' + [randomGIFpath, randomGIFname]);
return [randomGIFpath, randomGIFname];
})
}
позже в асинхронном коде

Код: Выделить всё

switch (act) {
case 'hug':
const arr = await randomGIFFunc('hug');
console.log("arr: " + arr); //undefined
const randomGIFpath = await arr[0]; const randomGIFname = await arr[1];
break;
терминал:

Код: Выделить всё

arr: undefined
There was an error running this command: TypeError: Cannot read properties of undefined (reading '0')
arr in function: src/gifs/hug/01.gif,01.gif
Все, что я пробовал, уже находится в коде, который я дал
Я могу только догадаться, что по какой -то причине функция фактически происходит позже (оценка журналов терминала), но я понятия не имею, почему код не ждет его, чтобы закончить

Подробнее здесь: https://stackoverflow.com/questions/797 ... s-an-array

Вернуться в «Javascript»