2017-01-12 83 views
0

我想知道在Angular 2中使用http調用任何api時,我們真的需要.map嗎?

請檢查我的下面的代碼。它與.map工作正常,甚至沒有.map。如果api返回數據,那麼它將返回成功,否則它將返回錯誤。在執行某些操作後,我還會從這裏返回任何模型數據。那麼,我需要Observable嗎?使用它有什麼好處嗎?我使用.subscribecomponent一側接收數據。這是好的還是我需要改進?在http 2中使用.map與Angular 2

returnData: ReturnData; 
callyAPI(body: modelData) { 
    return this.http.post(URL, body) 
      .do(data => { 
       for (let i = 0; i < data.length; ++i) { 
        this.returnData.push(data[i]); 
       } 
       return this.returnData; 
      }, 
       error => {}); 
     }); 
} 

回答

2

你並不需要使用mapdo是definitly錯誤的操作這裏

do應該執行一些代碼,每一個事件,但不能修改的事件價值,同時map可以更新或者用你的例子中的一個不同的值替換事件。

https://github.com/ReactiveX/rxjs/blob/master/src/operator/do.ts#L13-L14

  • 執行副作用爲源可觀察上的每個發射,但返回
  • 一個可觀察的是相同的來源。
+0

你的意思是我可以在'map'中執行一些代碼,比如'push',然後直接從'.do'返回數據。對 ? –

+0

不,返回'do'是毫無意義的,因爲它被忽略。你在'map'中返回的內容會替換事件值。我不知道你推什麼意思。如果您只是想將事件值添加到某個本地數組中,那麼您可以使用'do','do'不會影響用戶接收的內容,而'map'可以。 –

+0

在這裏,我正在從'do'接收組件'subscribe'。 –