gpt4 book ai didi

javascript - 从同步值和异步值创建数组

转载 作者:行者123 更新时间:2023-11-29 19:07:29 24 4
gpt4 key购买 nike

下面的代码工作得很好。控制台输出数组 [1, 2]

const getAsyncValue = () => {
return new Promise(resolve => {
setTimeout(() => {
resolve(1);
}, 1000)
})
}
const getSyncValue = () => {
return Rx.Observable.of(2);
}
const observer = (arrayOfValues) => {
console.log(arrayOfValues);
}
Rx.Observable.of(getPromise(), getSyncValue())
.concatAll()
.toArray()
.subscribe(observer)

我想将函数 getSyncFunction 更改为以下内容(因为在现实世界的应用程序中,此函数可能没有对 RxJs 库的引用):

const getSyncValue = () => {
return 2;
}

如果我只这样做而不做任何其他事情,我会得到一个错误:

You provided '2' where a stream was expected

我还需要对代码进行哪些其他更改?也许提示我要使用的运算符。

最佳答案

问题不在 getSyncValue() 中,而是在与高阶 Observables 一起使用的 concatAll() 中。当您仅传递 2 时,它会抛出错误。使用 Rx.Observable.of(2) 是正确的,因为它是一个发出单个值 2 的 Observable,该值由 concatAll() 发送。

我不知道你的代码应该做什么,但你可以这样做,例如:

Rx.Observable.of(getPromise(), getSyncValue())
.map(v => typeof(v) == 'object' ? v : Rx.Observable.of(v))
.concatAll()
...

但是,我确实建议您重新考虑这一点,因为我猜您可以使用比这更简单的方法。

关于javascript - 从同步值和异步值创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41741334/

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