【发布时间】:2020-02-22 10:32:32
【问题描述】:
我有如下声明:
for await (const blob of client.list()) {
console.log('\t', blob.name);
}
client.list() 返回一个异步可迭代迭代器,并期望使用for await...of 来解决承诺。我想将代码合并到实例化客户端的现有 rxjs 管道中。
我到处寻找,如果不解决管道内的承诺而不是转换成可观察对象,我不知道该怎么做。
任何帮助将不胜感激!
【问题讨论】:
-
"...期望使用
for await...of来解决承诺..."消费承诺,而不是解决他们。它们由其他代码解决,而不是上面的循环。 -
我认为这正是您想要做的github.com/kgurkan/rxjs-async-iterator。也讨论 RxJS github github.com/ReactiveX/rxjs/issues/4002
-
@martin 是的,我见过那个,它是我需要做的相反的事情。从 RxJS 进入 for-await-of。
-
@T.J.Crowder 从循环中可以看出,我可以从 Promise 中获取信息;那是'blob'及其属性'name'。因此我认为它确实解决了这个承诺。
-
@MichaelMay - 恐怕这根本不是承诺的工作方式。 :-) 如果您获得了一个 Promise 实例,那么您就没有可以用它来解决或拒绝它。同样,上面的所有代码都是使用这个promise——也就是说,代码responds这个promise被解决或拒绝(被其他代码)。这只是一个术语。 解决一个承诺是履行它或使其履行/拒绝依赖于另一个承诺的行为。
标签: javascript angular asynchronous rxjs reactivex