2016-12-23 17 views
7

Tôi tự hỏi nếu tôi có thể làm chỉ là một yêu cầu bài http mà không cần đăng ký trên callbacks, một cái gì đó như thế nàyhttp.post góc mà không .subscribe callback

this._http.post('/list/items/update?itemId=' + itemId + "&done=" + done, null); 

thay vì điều này

this._http.post('/list/items/update?itemId=' + itemId + "&done=" + done, null) 
     .subscribe(); 

Trả lời

4

Tôi không nghĩ rằng bạn có thể.

http.post (và nhận, đặt, xóa, v.v.) trả về một giá trị quan sát lạnh, tức là một Quan sát cho "nhà sản xuất cơ bản của nó được tạo và kích hoạt trong quá trình đăng ký" (https://medium.com/@benlesh/hot-vs-cold-observables-f8094ed53339#.tofgfsou4).

Điều này có nghĩa là chức năng được biểu thị bằng Observable chỉ được kích hoạt bằng phương thức đăng ký.

2

Tôi đang sử dụng chuyển đổi sang Hứa (yêu cầu rxjs):

import 'rxjs/add/operator/toPromise'; 
@Injectable() 
export class SomeService { 
.... 
    post(sp: Seatplace, date?: Date) : Promise<any> { 
    return this.http.post(
     '/list/items/update?itemId=' + itemId + "&done=" + done, 
     null 
    ).toPromise(); 
    } 
} 
2

Tôi có cùng một câu hỏi nhưng sau đó tôi đã tìm ra rằng tôi thực sự không quan tâm nếu ai đó đặt mua các quan sát được. Tôi chỉ muốn yêu cầu POST được gửi trong mọi trường hợp. Đây là những gì tôi đã đưa ra:

postItem(itemData) { 
    var observable = this.http.post('/api/items', itemData) 
     .map(response => response.json()) // in case you care about returned json  
     .publishReplay(); // would be .publish().replay() in RxJS < v5 I guess 
    observable.connect(); 
    return observable; 
} 

Yêu cầu được gửi ngay sau khi connect() được gọi. Tuy nhiên, vẫn có thể quan sát được rằng người gọi postItem có thể đăng ký nếu được yêu cầu. Vì publishReplay() được sử dụng thay vì chỉ publish(), bạn có thể đăng ký ngay cả sau khi yêu cầu POST hoàn tất.

Các vấn đề liên quan