Почему 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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