首页 文章

Angular:了解提交数据时的订阅时间

提问于
浏览
1

我真的很困惑,想知道是否有人可以帮助我尝试理解.subscribe in angular 2 rxjs .

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

正如我的理解是您订阅时,然后再次单击该按钮,您将有2个订阅实例,依此类推 . 现在我知道你要说什么了,你可以杀掉毁灭中的订阅或其他什么,但这不是我的问题 .

我的问题是,如果表单永远不会被销毁,直到您单击主页按钮并且表单在提交时清除以便提交更多数据,我是否需要使用Promise over Subscribe?由于订阅(根据我的理解)就像是时事通讯,您点击订阅的次数越多,您收到的时事通讯就越多 .

那么最好一遍又一遍地提交数据,而不需要多次订阅?

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

要么

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

2 回答

  • 0

    可观察者很懒惰您可以将懒惰的可观察者视为新闻通讯 . 为每个订阅者创建一个新的简报 . 然后他们只发送给那些人,而不是其他任何人 .

    随着时间的推移,Observable可以拥有多个值现在,如果您保持订阅开放的简报,您将每隔一段时间获得一个新的 . 发件人决定何时获得它,但您只需要等到它直接进入您的收件箱 .

    如果你来自承诺的世界,这是一个关键的区别,因为承诺总是只返回一个值 . 另一件事是可观察物是可取消的 . 如果您不再需要简报,请取消订阅 . 承诺这是不同的,你不能取消承诺 . 如果承诺交给您,那么将产生该承诺解决方案的过程已经在进行中,并且您通常无权阻止该承诺的解决方案执行 .

  • 1

    Observable是流数据 . 希望这段代码能帮助您理解这一点 .

    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();
    

相关问题