我有一个问题并解决了,但希望收到几个问题的答案。我需要通过Angular HttpClient的post方法发送一些数据。在开始时,我以这种方式实现了请求:
this.http.post<{name: string}>('some/url/address', {name}, httpOptions).subscribe((response) => {
console.log('the request was sucessfull' + response.name);
});
但是我注意到,当我删除订阅时,请求根本不会启动。我结束了将可观察到的那样转换为:
this.http.post<{name: string}>('some/url/address', {name}, httpOptions).toPromise();
并且它正常工作。我的问题是:
预先感谢您的回答。
1.)我认为您的第一种方式可以订阅。
2.)promise解决方案的负面影响是,我们放弃了丰富的RxJS库的功能,进入了promise领域。我们无法利用map, switchMap, mergeMap, catchError, withLatestFrom
加上的其他众多运算符RxJS
。兑现承诺路线的另一个负面影响是,一旦“兑现了承诺”,它就必须以成功或错误返回。随着观察到,尽管我们订阅它,并将其发送到“飞”,我们可以取消(因此即使不使所有的API调用)中期飞行使用,我相信(在认购回拨踢之前)takeUntil
和API不会拨打电话。
3.)这是不可能的,必须订阅一个流才能将其发射/“起飞”。
4.)是的,您是正确的。与2有种联系,您可以通过retry, catchError, takeUntil
取消订阅来获得更丰富的体验。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句