我试图利用angular2中的可观测值,但我不明白为什么要用map()subscribe().

  this.http.get('http://172.17.40.41:8089/api/Master/GetAllCountry')

现在使用subscribe(success, error, complete),我可以得到成功回调的所有值,并且可以返回完整回调的值.如果我能完成所有这些功能,那么map()需要什么呢?这有什么好处吗?

In short, why one should write like this:

this.http.get('http://172.17.40.41:8089/api/Master/GetAllCountry')
    .map(r=>{})
    .subscribe(value => {
    }, error => error, () => {
});

when they can simply write this without the map function:

this.http.get('http://172.17.40.41:8089/api/Master/GetAllCountry')
    .subscribe(value => {        
    }, error => error, () => {           
});

推荐答案

如果您想返回一个Observable,其他一些代码可以订阅,但您仍然想在当前方法中操作数据事件,请使用map.

observable的实际用户需要设置为subscribe(),因为如果没有subscribe(),observable将根本无法执行.(forEach()toArray(),可能还有其他人也在执行可观察到的,而不是subscribe())

subscribe()返回无法订阅的Subscription,但可用于取消订阅.

map()返回可订阅的Observable.

Typescript相关问答推荐

类型ElementTypes不可分配给类型ElementTypes.word'

如何使用TypScript限制允许对JavaScript值进行的操作集?

类型断言添加到类型而不是替换

打印脚本中的动态函数重载

Material UI / MUI系统:我如何告诉TypeScript主题是由提供程序传递的?

如何在TypeScrip中正确键入元素和事件目标?

在函数中打字推断记录的关键字

从子类构造函数推断父类泛型类型

用于验证字符串变量的接口成员

嵌套对象的类型

如何避免推断空数组

APP_INITIALIZER在继续到其他Provider 之前未解析promise

转换器不需要的类型交集

Angular material 无法显示通过API获取的数据

界面中数组中的混合类型导致打字错误

将布尔值附加到每个对象特性

是否将Angular *ngFor和*ngIf迁移到新的v17语法?

如何静态键入返回数组1到n的函数

为什么`map()`返回类型不能维护与输入相同数量的值?

如何根据Typescript 中带有泛型的对象嵌套键数组获取数组或对象的正确类型?