我有一个函数要传递数据,该数据会将其发送到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);
});
}
答案 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
}
}