Я кодирую приложение на основе Node v10.13.0, Electron 3.0.7 и Angular 7.
Служба отвечает за обработку файлов, функция с именем ( listFiles ) считывает и возвращает массив имен файлов, содержащихся в каталоге.
listFiles(path):Observable<string[]>{
this.files_in_directories = [];
return of(this.fs.readdir(path, function(err, items) {
if (err) {
console.log(err);
return;
}
for (var i=0; i<items.length; i++) {
this.files_in_directories.push(items[i]);
console.log(items[i]);
}
return this.files_in_directories;
}.bind(this)));
}
Мой код основан на Angular Guide: https://angular.io/tutorial/toh-pt4#observable-heroservice
В компоненте сервис называется:
ngOnInit() {
this.getScripts('Project');
}
getScripts(project){
this.generalService.listFiles(this.config.location.datastore+'\\'+project).subscribe(files=>{
this.scripts = files;
this.cdref.detectChanges();
});
}
Когда этот код выполняется, файлы читаются, но никогда не возвращаются, как наблюдаемые, вместо этого получается значение undefined (см. Изображение):
Отладчик неопределенных значений
Я немного растерялся, как поступить с этого момента, файлы в каталоге правильно перечислены. Файл в консоли
Я полагаю, что проблема заключается в возврате массива внутри функции обратного вызова. Любые идеи.