2017-04-18 146 views
1

我想有一個通用的HTTP GET服務,我這樣做是使用下面的代碼:Angular2打字稿承諾

public get(module: String): Promise<any> { 
return this.http.get(module) 
      .toPromise() 
      .then(response => response.json().data as Any[]) 
      .catch(this.handleError);} 

的問題是,現在我想知道當http.get完成發射命令,我不知道該怎麼做。

如果我補充一點到。然後一步這是行不通的

.then(response => response.json().data as Any[] && alert("HI")) 

如果我在其他then後添加.then,它觸發被滿足的HTTP請求之前。

我該如何實現它?

使用dfsq代碼我能夠發出警報(「HI」),但響應未定義。這是我使用它的方式:

this.dataService.get(「myurl」)。then(response => console.log(response));

我得到了一個未定義

+0

「如果我在其他時間之後添加一個.then,它會在滿足http請求之前觸發。」你能顯示這個代碼嗎?這不是如何承諾鏈接工程 –

+0

@suraj我想它是'然後(警報(「嗨」))'。 – dfsq

回答

1

你確實需要增加一個then塊:

public get(module: String): Promise<any> { 
    return this.http.get(module) 
      .toPromise() 
      .then(response => response.json().data as Any[]) 
      .then(data => { 
      alert("HI") // <---- do something here 
      return data 
      }) 
      .catch(this.handleError); 
} 

務必從返回以前data,那麼塊,所以你進一步傳遞下來的諾言鏈。

+0

對不起dfsq,警報(「HI」)正在工作,但現在響應不起作用。這是爲什麼?我得到了來自console.log的未定義的 – tunoandsuno

+0

響應裏面的get函數返回響應。但是在函數外面返回undefined。 – tunoandsuno

+0

你把console.log放在哪裏? – dfsq