javascript - RXJS Angular - 如何在包含可观察对象的 foreach 循环结束时调用函数?

标签 javascript typescript rxjs angular5 angular-httpclient

this.attachmentList.forEach((attachment, i) => {
    this.service.getPageOfAttachment().flatMap(response =>
        this.service.download((JSON.parse(response['Content']).mediaUrl)))
        .subscribe(response => {
            }, error => (console.log(error)),
            () => {
                if (i > this.attachmentList.length - 1) this.getPdfSharp(pdfSharpByteArray, attachment.entityName, i);
            })
})

在 foreach 循环结束时,我正在检查“i”的值,如果它大于列表长度,我将调用该函数。这个问题是因为我在循环内订阅,所以 I 的值并不总是以正确的顺序排列,并且该函数被提前调用。我如何遍历包含订阅的 foreach 循环,然后在循环和订阅完成时调用我的函数?

最佳答案

你有没有想过forkJoin?可能不是最干净的,但我认为它可以工作。这也可以帮助 waiting observable subscribe inside foreach to end

关于javascript - RXJS Angular - 如何在包含可观察对象的 foreach 循环结束时调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52088419/

相关文章:

javascript - glMatrix 2.2.0 与 RequireJS

javascript - Internet Explorer 不加载选择框中的值

typescript - 如何编写支持 amd 和普通浏览器的 typescript 模块

angular - rxjs 管道运算符之后的 HttpInterceptor

javascript - 如何让 JQuery-UI 自动完成在使用远程源类别时按 Enter 键提交?

javascript - iframe 在另一个 iframe 中调用 javascript 函数?

angular - 找不到 @angular/core 和许多其他组件,即使它存在。如何解决这个问题?

html - 带文本字段输入的 Angular 2 对话框弹出

angular - 如何使用 RxJS 和 Angular2 构建真正的可观察集合?

angular - 如何等待异步管道完成并在之后调用另一个函数,而不订阅