可观察量和响应数据类型

时间:2017-07-22 00:41:35

标签: javascript json typescript asynchronous observable

我试图抓住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'数据'没有初始类型。

  

TypeError:无法读取属性' item'未定义的

为json响应创建一个接口听起来很傻。我错过了什么?

此外,创建回调函数似乎也是多余的,因为它将需要2个函数来完成应该是单个函数的工作。

1 个答案:

答案 0 :(得分:0)

  

因为var'数据'没有初始类型。

没有。该错误是因为数据undefined。 TypeScript非常智能,可以看到data未初始化https://basarat.gitbooks.io/typescript/content/docs/javascript/recap.html。代码执行的顺序如下:

let data; // 1 
this.getData(id)
        .subscribe(res => data = res) // 3!
console.log(data.items[0]) // 2

更多

请在JavaScript / TypeScript中查找异步编程。基本上,只有在调用subscribe时才能使用数据。