发生错误时,Angular 4停止订阅

时间:2019-06-10 14:10:38

标签: angular typescript

我有一个函数要传递数据,该数据会将其发送到Lambda服务。成功后,它仅在响应中返回“成功”。我不需要从中返回值。只希望它在出现错误时停止。.

当我模拟错误(错误数据)时,订阅将继续反复尝试。遇到错误时如何停止重试?我以为“错误=>”可以解决这个问题?

dataStream(dataLayer): void {
    const postBody = JSON.stringify(dataLayer);
    this.http.post(`https://api.example.com/capture`, postBody, {
      headers: new HttpHeaders({
        'Content-Type': 'application/json'
      })
    }).subscribe(
      result => {
        if ( result === 'success') {
          this.setWindowDataLayer(dataLayer);
        }
      },
        error => {
          console.error('Failed to send dataStream: ', error);
      });
 }

1 个答案:

答案 0 :(得分:-1)

使用await来获取数据。

您可以按照以下步骤操作:

async dataStream(dataLayer): void {
    const postBody = JSON.stringify(dataLayer);
    try {
        const responce = await this.http.post('https://api.example.com/capture', postBody, {
          headers: new HttpHeaders({
             'Content-Type': 'application/json'
          })
        });
        responce.subscribe(result => {
            if ( result === 'success') {
              this.setWindowDataLayer(dataLayer);
            }
        })
    } catch(error) {
        console.error('Failed to send dataStream: ', error);
        responce.unsubscribe(); //do unsubscribe here
    }
}