gpt4 book ai didi

javascript - 无法从 Angular 中的响应数据分配数据

转载 作者:行者123 更新时间:2023-12-03 02:00:24 25 4
gpt4 key购买 nike

我有一个函数,在调用时应该返回一个对象数组。该函数如下所示

loadTodo(): Todo[]{
var data
this.http.get(`${this.API_URL}todos`).toPromise().then(res => {
data = res.json()
}, error => {
console.log(error)
})
return data}

这会导致意外行为,其中 data 变量在成功响应 block 内正确分配,但在响应 block 外部访问时却未定义

该函数被分配给类型为 Todo[] 的变量,并在声明该变量时立即调用。我对 TypeScript 和 Angular 很陌生,但对 JavaScript 不太熟悉。我是否遗漏了函数范围/闭包的某些内容,或者这个问题与 TypeScript/Angular 有关?

整个类(class)看起来像这样:

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
}
}

最佳答案

http.get() 是异步的,这意味着当您尝试在 then 回调之外打印 parcedTodos 时,它仍然会未定义。

Asynchronous programming in JS

关于javascript - 无法从 Angular 中的响应数据分配数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50060294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com