В моем приложении есть 3 кнопки загрузки. При каждом нажатии кнопки будет отправляться DownloadFileAction (payload = fileId). Эффект будет продолжать прослушивать тип Download_File_Action.
@effect()
download_attachment$: Observable = this.actions$
.ofType(FileActions.ActionTypes.DOWNLOAD_ATTACHMENT)
.map(toPayload)
.switchMap( attachment => {
return this.service.downloadAttachment(attachment.link) //absolute link
.map( (data) => {
this.service.saveAttachment(data); //save file locally
return new FileActions.DownloadAttachmentSuccessAction(attachment);
})
.catch(error => {
//debugger;
console.log(error);
});
})
Если одновременно нажать более 1 кнопки, будут отправлены 2 действия DownloadFileAction.
Howerver, download_attachment $ effect прослушивает только тот, который загружается первым, а затем возвращает DownloadAttachmentSuccessAction, поэтому загрузка других файлов не будет завершена.
Есть ли какое-нибудь решение или обходной путь? Ваша идея очень ценится
switchMap
наmergeMap
. - person cartant   schedule 12.05.2017