Функция подписки является асинхронной, аналогично тому, как обещания являются асинхронными. Таким образом, ваша функция запускает http-запрос, который выполняется в фоновом режиме. Во время работы программа продолжает работу и возвращает все, что установлено для this.data.
Как это исправить, зависит от того, как вы хотите обработать асинхронную природу c. Один простой способ - преобразовать наблюдаемое в обещание и использовать async / await, чтобы получить что-то вроде:
async ReadFile(filename: string, fileFunktion: string) {
this.data = await this.http.get(filename).toPromise()
return this.data
}
ReadFile - это асинхронная функция c, поэтому она всегда возвращает обещание, поэтому вам потребуется используйте await при вызове:
await ReadFile('foo', 'barr')
Смешивание обещаний и наблюдаемых - не самое лучшее, но это может помочь в качестве простого способа добиться успеха, пока вы выбираете лучший путь вперед.