-1

我不是那麼到JavaScript \打字稿和我有關於究竟是如何工作的這一段代碼如下疑問:這個Angular 2示例中的Observable行爲究竟有多精確?

onGet() { 
    this.serverService.getServers() 
     .subscribe(
     (servers: any[]) => this.servers = servers, // an array of anything (or an array of server) 
     (error) => console.log(error) 
    ); 
    } 

從我可以undestood的使用onGET()方法調用getServers( )返回一個** Observable的方法,所以它正在訂閱這個返回的Observable對象。

從我所瞭解的Observable概念來看:當這個對象發生某些變化時(當事件被觸發時,糾正我,如果我做錯了斷言),執行與匿名內部函數相關的代碼。

但在這裏我不是很確定這一段代碼的確切含​​義以及如何正確閱讀:

(servers: any[]) => this.servers = servers, // an array of anything (or an array of server) 
    (error) => console.log(error) 

你能幫我明白究竟如何運作?

+0

你究竟有什麼不明白的?類型?箭頭函數的語法?你讀過例如http://www.typescriptlang.org/docs/home.html?見例如https://meta.stackoverflow.com/q/253894/3001761並更具體。 – jonrsharpe

+0

我在這裏發現了一個關於觀察值的非常好的解釋https://angular-2-training-book.rangle.io/handout/observables/using_observables.html – jitender

回答

1
(servers: any[]) => this.servers = servers, // an array of anything (or an array of server) 
(error) => console.log(error) 

相當於

(servers: any[]) => { //success callback 
     this.servers = servers; // an array of anything (or an array of server) 
}, 
(error) => { //error callback 
     console.log(error); 
} 

第一個是success回調和第二個是error回調其基於由getServers()

+0

內聯表格還*返回結果。 – jonrsharpe

+0

是的。我只是把它變成更可讀的格式。這是實際的用戶問題。 –

+0

我的觀點是你的等價物沒有。此外,還不清楚這是* OP的實際問題。 – jonrsharpe

0
// this function will resolve for a response, which is not an error 
    (servers: any[]) => this.servers = servers, 
    // this will resolve if the response is an error: 
    //either a http error or thrown error 
    (error) => console.log(error) 

據推測,返回的結果來執行請撥打serverService請求服務器列表,並從該列表中設置this.servers。如果發生錯誤(如4XX或5XX錯誤),控制檯將顯示錯誤。在任何情況下,可觀察項目都將被解決並關閉。對於可以在稍後的某個時間點更新的「活的」可觀察的,可以使用某種類型的Subject