Я хочу получить список всех моих файлов MP3 и вернуть список только после завершения поиска. Я использую этот код, но он не работает так, как я ожидаю:
(он работает на NativeScript)
const fs = require("tns-core-modules/file-system");
const root = android.os.Environment.getExternalStorageDirectory().getAbsolutePath().toString();
let retrievedData = [];
export async function fileRetriever( mode , path=root ) {
retrievedData = [];
console.log('start');
if ( mode == 'songs' ) retrievedData = await songSeeker();
console.log('should be received');
console.log(retrievedData);
console.log('stop');
return retrievedData;
}
function songSeeker ( path = root ) {
let documents = fs.Folder.fromPath( path );
documents.getEntities()
.then( ( entities ) => {
entities.forEach( ( entity ) => {
// ------ catch on Folder
if ( fs.Folder.exists( entity.path ) ) {
songSeeker ( entity.path );
// ------ catch on File
} else if ( entity.extension == '.mp3' ) {
let tmpData = {
title: entity.name ,
path: entity.path
};
retrievedData.push( tmpData );
}
} );
} ).catch( ( err ) => {
console.log(err.stack);
} );
return retrievedData;
}
Я ожидаю получить полный список, но он возвращает только первый файл!
результат:
JS: 'start'
JS: 'should be received'
JS: [ { title: 'Hatef music.mp3',
JS: path: '/storage/emulated/0/Hatef music.mp3' },
JS: [length]: 1 ]
JS: 'stop'