gpt4 book ai didi

javascript - Observable 与 Promise,如何等待所有 observable 完成?

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:24 25 4
gpt4 key购买 nike

在 Node.js 中,我需要等待几个 Observable 完成。我还需要订阅每个可观察的。

我会使用 Promise.all() 但那些是 Observable 而不是 Promise

下面的代码正确吗?

let promise1 = observable1.toPromise()
observable1.subscribe(...)
let promise2 = observable2.toPromise()
observable2.subscribe(...)
Promise.all([promise1, promise2]).then(...)

如果不正确,如何修改?

我尝试了这段代码:

      let courtsPromise =
this.ownedContractHandle.pastEvents({fromBlock: 0, filter: {courtId: this.courtIDs}})
.subscribe(events => this.processCourtEvents(events))
let namesPromise =
this.courtNamesContractHandle.pastEvents({fromBlock: 0, filter: {ourCourtId: this.props.courtId}})
.subscribe(events => this.processNameEvents(events))
let trustedCourtsPromise =
this.ownedContractHandle.getTrustedCourtsList(this.props.courtId)
console.log('before zip')
zip([courtsPromise, namesPromise]).subscribe(function(values) {
console.log('values', values)
this.updateCourtItems()
this.updateTokenNames()
this.updateTrustedCourts(values[2])
})

它打印'before zip',但不打印'values'。为什么不起作用?

你也看到了,在两个可观察量中我也有一个 promise 。如何等待它(当两个可观察量和一个 promise 都完成时)?

最佳答案

你的意思是zip之类的东西吗?

引用:https://www.learnrxjs.io/learn-rxjs/operators/combination/zip

将上面链接中的示例复制到 stackblitz。希望对您有帮助

https://stackblitz.com/edit/rxjs-cb55fc?devtoolsheight=60

关于javascript - Observable 与 Promise,如何等待所有 observable 完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60134100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com