2016-08-05 3 views
1

이 함수를 호출하면 console.log()가 작동하지만 http.delete 메서드는 실행되지 않습니다. 왜냐하면 observable을 구독하지 않았기 때문입니다.Observable을 사용하지 않고 http 메서드를 호출하는 방법

양식의 단추에서 이것을 호출하기 때문에 아무 것도 반환하지 않아도되므로 전화를 걸 수있는 방법이 있습니까?

deleteCompany(id) { 
     console.log('from data service: ', id); 
     this.http.delete(this.url + 'Companies/' + id + '?' + this.token).map(res => res.json()); 
    } 

편집 : 내가이 대신 갔다. 이것을 처리하는 올바른 방법입니까?

import 'rxjs/add/operator/toPromise'; 
... 
return this.http.delete(this.url + 'Companies/' + id + '?' + this.token).toPromise(); 
+0

"편집 :"괜찮습니다. 또한 콜백을 전달하지 않고'subscribe()'를 호출 할 수 있습니다. 나는 이것이 이것이 의도가 무엇인지를보다 분명하게 해줄 것이라고 생각한다. –

답변

4

@Gunter가 지적한대로, 관찰 가능을 사용하려면 subscribe으로 전화해야합니다. 당신이 뭔가를 반환 할 경우 다음과 같은 (약속 게으른 아니기 때문에) promiseobservable을 변환 할 수 있습니다 위해

import 'rxjs/add/operator/toPromise'; 
    deleteCompany(id) { 
      console.log('from data service: ', id); 
     return this.http.delete(this.url + 'Companies/' + id + '?' + this.token).toPromise(); 
     } 

그것은 구성 요소에 then 대신 subscribe을 사용하여 소비 할 수 있습니다. 예 :

this._yourServiceName.deleteCompany(this._id).then((data)=> console.log(data), (err) => console.log("error occured", err);); 
+0

답변 해 주셔서 감사합니다. 이해하기 위해 (필자는 매우 새로운 것입니다.) 예제에서 응답을 매핑하므로 구성 요소에서 소비 할 항목이 있고 .promise를 사용하여 실제로 http 호출을 올바르게 트리거합니다. 그럼 어떻게 사용하지 않았던지 알게 된 이래로 '돌아 오는'것이 맞습니까? – Lee

+0

당신 말이 맞아요. 나는 관찰 할 수있는 것을 되 돌리는 것을 잊었다 (지금 편집 됨). 일반적으로 우리는'map' (또는 다른 방법)을 사용하여 데이터 스트림을 변환합니다. 'map (res => res.json()'을 사용하면 여기에서 사용하지 않아도되는 JSON으로 응답을 구문 분석합니다 .ToPromise 메소드는 컴포넌트에서'then' 메소드를 사용하여 해결 된 약속을 반환합니다. – candidJ

1

번호 Observables은 게으른하고 subscribe 또는 toPromise 호출하기 전에 아무것도하지 않습니다.

관련 문제