我试图 grab Observables,但有时会迷失方向 .
假设我们订阅getData以异步获取json数据:
this.getData(id)
.subscribe(res => {
console.log(data.items[0])
// more data processing
})
这有效,但处理.subscribe内部的响应数据看起来并不令人满意 . 将响应分配给var似乎是一种方法:
let data;
this.getData(id)
.subscribe(res => data = res)
console.log(data.items[0])
// more data processing
但在这种情况下,我们得到错误,因为var'data'没有初始类型 .
TypeError:无法读取未定义的属性“项”
为json响应创建一个接口听起来很傻 . 我错过了什么?
此外,创建回调函数似乎也是多余的,因为它将需要2个函数来完成应该是单个函数的工作 .
1 回答
不会 . 错误是因为数据是
undefined
. TypeScript非常智能,可以看到data
未初始化https://basarat.gitbooks.io/typescript/content/docs/javascript/recap.html . 代码执行的顺序如下:更多
请在JavaScript / TypeScript中查找异步编程 . 基本上,只有在调用
subscribe
时才能使用数据 .