2017-09-14 69 views
0

我正在創建音樂播放器,但當用戶跳過一首歌曲時,它應該停止歌曲的當前下載並前進到下一個歌曲。我正在使用解析爲承諾的異步角度http函數。我不能使用訂閱()或unsubcribe(),因爲這隻會破壞功能停止不使用取消訂閱的有角HTTP請求

這是我的代碼:

private async downloadSong(track: Track): Promise<string> { 
    if(!isNullOrUndefined(this.request)) 
     console.log(this.request) // Returns: Response {_body: Blob, status: 200, ok: true, statusText: "OK", headers: Headers, …} 

    this._downloadingSong = true; 
    this.request = await this.http.get(track.source, {responseType: ResponseContentType.Blob}).toPromise(); 
    this._downloadingSong = false; 
    return URL.createObjectURL(this.request.blob()); 
} 
+0

你是什麼意思*「...停止當前下載..」*?你的意思是在一個正在播放的源代碼中?或者你是否意味着當方法再次被激發時取消當前對「下一個曲目」的請求?對於後者,即「快速點擊」導致'this.http.get(track.source,....'被取消,如果在響應之前出現另一個「點擊」事件。 –

+0

如果軌道已經停止跳過一個按鈕上的'點擊' –

回答