首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular:了解提交数据时何时订阅

Angular:了解提交数据时何时订阅
EN

Stack Overflow用户
提问于 2018-03-24 06:34:16
回答 2查看 2.3K关注 0票数 1

我真的很困惑,不知道有没有人能帮我理解angular 2rxjs中的.subscribe。

如果我有一个带按钮的页面来提交一些表单数据,我需要订阅才能发布信息或使用promise吗?

因为我的理解是,当你订阅的时候,你再次点击按钮,你就会有2个订阅的实例,依此类推。现在我知道你要说什么了,好吧,你可以在销毁中删除订阅,或者其他什么,但这不是我的问题。

我的问题是,如果表单在您单击主页按钮之前从未销毁,并且表单在提交时被清除,以便提交更多数据,我是否需要使用Promise over Subscribe?因为订阅(据我所知)就像一份时事通讯,你点击订阅的次数越多,你收到的时事通讯就会越多。

那么,在没有多个订阅的情况下,哪种方法最好反复提交数据呢?

myObsFunc(dataToSend).subscribe(err => console.log(err),() => console.log(success));

myObsFunc(dataToSend).toPromise().then().catch(e => console.log(e));

EN

回答 2

Stack Overflow用户

发布于 2018-03-24 16:05:52

观察者是懒惰的,你可以把懒惰的观察者看作时事通讯。为每个订阅者创建一个新的时事通讯。然后,它们只被发送给这些人,而不是其他任何人。

随着时间的推移,可观察值可以有多个值。如果您保持对时事通讯的订阅处于打开状态,则会时不时地获得一个新的值。发件人决定你什么时候收到它,但你所要做的就是等待,直到它直接进入你的收件箱。

如果你来自promises的世界,这是一个关键的区别,因为promises总是只返回一个值。另一件事是可观察到的是可取消的。如果你不再想要你的时事通讯,你可以取消订阅。对于承诺,这是不同的,你不能取消承诺。如果承诺交给了您,那么将生成该承诺的解决方案的过程已经在进行中,并且您通常没有权限阻止该承诺的解决方案执行。

票数 1
EN

Stack Overflow用户

发布于 2018-03-24 06:45:18

可观察性是流数据。希望这段代码能帮助你理解这一点。

代码语言:javascript
复制
import {timer} from "rxjs/observable/timer";

let observable = timer(1, 1000); //timer will emit an event each second

let subscribtion = observable.subscribe((data) => {
  //do stuff for each tick of stream data
  console.log(data);
}, (reason) => {
  //when there was an error while watching observable
}, () => {
  //do stuff when stream is complete
});

//when you need to unsubscribe from this events you can call
subscribtion.unsubscribe();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49459150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档