У меня есть функция, которая должна вызывать массив объектов при вызове. Функция выглядит следующим образом
loadTodo(): Todo[]{
var data
this.http.get(`${this.API_URL}todos`).toPromise().then(res => {
data = res.json()
}, error => {
console.log(error)
})
return data}
Это приводит к неожиданному поведению, когда переменная data
назначается правильно в блоке ответа об успешном выполнении, но имеет значение undefined
при доступе вне блока ответа.
Функция присваивается переменной с типом Todo[]
и вызывается сразу после объявления переменной. Я совершенно новичок в TypeScript и Angular, но не в JavaScript. Я что-то упускаю из-за области действия / закрытия функции или эта проблема связана с TypeScript / Angular?
Весь класс выглядит так:
export class TodoDataService {
API_URL: String = 'http://localhost:3000/'
todos: Todo[] = this.loadTodo();
constructor(private http: Http) {
}
loadTodo(): Todo[]{
this.http.get(`${this.API_URL}todos`).toPromise().then(res => {
this.parcedTodos = res.json()
console.log('inside function')
console.log(this.parcedTodos)
}, error => {
console.log(error)
})
console.log('outside function')
console.log(this.parcedTodos)
return this.parcedTodos
}
}