从同步值和异步值创建数组
Create an array from sync and async values
下面的代码工作得很好。控制台输出一个数组[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()
中,而是在与 higher-order 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()
...
但是,我确实建议重新考虑这一点,因为我猜你可以使用比这更简单的方法。
下面的代码工作得很好。控制台输出一个数组[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()
中,而是在与 higher-order 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()
...
但是,我确实建议重新考虑这一点,因为我猜你可以使用比这更简单的方法。