.toPromise()同步方式和管道异步方式之间的区别

时间:2017-05-18 09:07:46

标签: angular typescript synchronization pipe observable

.toPromise().then()异步方式和pipe异步方式

之间有什么区别

此处使用toPromise().then()方法synchronous致电

deleteErrorList(errordetails) {
        return this.http.post(this.apiUrl + 'RemoveErrorList', errordetails, this.requestOptions)
            .toPromise().then((res: Response) => {
                return res.json();
            })
            .catch(error => {
                return Observable.throw(error);
            });
    }

HTML - *ngFor="let variantLabel of elementData.elementDataCollection"

但我的同事之一给了我一个建议,即map()使用asyncpipeobservables模式,而不是toPromise()

所以我使用.map()代替toPromise()

更改了我的代码
deleteErrorList(errordetails) {
            return this.http.post(this.apiUrl + 'RemoveErrorList', errordetails, this.requestOptions)
                .map((res: Response) => {
                    return res.json();
                })
                .catch(error => {
                    return Observable.throw(error);
                });
        }

HTML - *ngFor="let variantLabel of elementData.elementDataCollection | async"

  

但代码有助于sync调用的相同过程。 但我们不知道有什么区别?仅支持Observable是否有帮助?哪一个是最好的方式?

1 个答案:

答案 0 :(得分:1)

如果您使用ChangeDetectionStrategy.OnPush | async管道将在主机组件上调用ChangeDetectorRef.markForCheck()以进行更改检测,请在下一回合包含此组件。