2017-09-14 47 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

如果轨道已经停止跳过一个按钮上的'点击' –

回答