gpt4 book ai didi

javascript - 如何解决流中的 promise ?

转载 作者:行者123 更新时间:2023-11-29 15:23:20 26 4
gpt4 key购买 nike

我有一个 highland 流,其中每个元素都是对 get 请求的 promise :

const stream = _[promise1, promise2, promise3, ...];

当然,当我运行时:

const stream.each(console.log)

我只看到:

Promise { <pending> }
Promise { <pending> }
Promise { <pending> }

但我想创建一个管道并处理 promise 的实际结果。 (我不想使用 thenawait)。我想通过流管道解决这些 promise 。

我想应该有一种方法可以使高地流仅将已解决的 promise 映射到新流中,因此我希望能够将 promise 流扁平化为它们的实际值流。

四处挖掘,我想 flatMapflatten 应该做我正在寻找的东西,但我不知道如何继续以及我所有的试错让我失望了。

我试过:

 stream.flatMap((id: number) => {
return myAsyncGetRequest(id);
}).each(console.log)

我如何解决流中的 promise ?

最佳答案

我无意中发现了一个 github 问题 the answer of quarterto启发了我:

必须将 promise 包装在 Highland 中,flatMap 才能按预期工作:

 stream.flatMap((id: number) => {
return Highland(myAsyncGetRequest(id));
}).each(console.log)

该主题还阐明了为什么不等待 promises。

quarterto表述为:

Highland isn't a Promise library. It can consume promises, like it can consume arrays, callbacks and event emitters, but its API is focused around transforming streamed values, not promises. It's like asking why Array.prototype.map doesn't wait for promises, or why Bluebird doesn't wait for Streams.

或者如 vqvu 所说:

Highland streams already represent a future array of values, so it doesn't really make sense to treat promises as something special.

关于javascript - 如何解决流中的 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41488745/

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