首页 文章

可观察量和响应数据类型

提问于
浏览
0

我试图 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 回答

  • 0

    因为var'data'没有初始类型 .

    不会 . 错误是因为数据是 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 时才能使用数据 .

相关问题