2016-12-23 62 views
7

我想知道如果我可以做只是一個http POST請求沒有訂閱的回調,像這樣角http.post沒有.subscribe回調

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

,而不是這個

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

回答

2

我使用轉換爲無極(需要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

我有同樣的問題,但後來我想通了,我實際上如果有人訂閱可觀察不在乎。我只是想在任何情況下發送POST請求。這是我想出的:

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; 
} 

該請求被髮送,只要connect()被調用。但是,仍然有一種可觀察的情況,即如果需要,postItem的調用者可以訂閱。由於使用publishReplay()而不是僅使用publish(),因此即使POST請求完成後,訂閱也是可能的。