arrays - RxJS:从 Observable.fromPromise 拆分数组结果

标签 arrays reactive-programming rxjs

我在这里使用 RxJS,我似乎无法克服这个看似简单的问题。

rx.Observable
    .from([1,2,3,54,3,22,323,23,11,2])
    .distinct()
    .subscribe(function next (x) {
        console.log('Next');
        console.log(x);
    }, function error (x) {
        console.log('Error');
        console.log(x);
    }, function completed () {
        console.log('Completed');
    });

上面的代码按预期顺序输出每个数组项。
rx.Observable
    .fromPromise(getNumbers([1,2,3,54,3,22,323,23,11,2]))
    .distinct()
    .subscribe(function next (x) {
        console.log('Next');
        console.log(x);
    }, function error (x) {
        console.log('Error');
        console.log(x);
    }, function completed () {
        console.log('Completed');
    });

function getNumbers (nums) {
    return new Promise(function (resolve, reject) {
        resolve(nums);
    });
}

虽然在这里我只得到完整的数组(即 [ 1, 2, 3, 54, 3, 22, 323, 23, 11, 2 ] )。 RxJS 不应该打破结果吗?我希望它至少有一些逻辑。

谢谢

最佳答案

不,它不会隐式地将它们分开。如果您想拆分它们,请使用 flatMap这将使数组变平:

 rx.Observable
    .fromPromise(getNumbers([1,2,3,54,3,22,323,23,11,2]))
    .flatMap(function(x) { return x; })
    .distinct()
    .subscribe(function next (x) {
        console.log('Next');
        console.log(x);
    }, function error (x) {
        console.log('Error');
        console.log(x);
    }, function completed () {
        console.log('Completed');
    });

关于arrays - RxJS:从 Observable.fromPromise 拆分数组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32239148/

相关文章:

android - 有没有办法在 rx-java/kotlin 中对 groupBy 键进行排序?

angular - 主体和行为主体有什么区别?

javascript - *RxJs* 如何将多个 ajax 组合成一个不需要序列的可观察对象

ruby - 找到数组的第二个元素

java - 如何将音频文件转换为字节数组

java - 为什么 toMap 的错误放置会导致 RXJava 出现问题?

angular - 为什么组合的可观察对象在使用 Subject 时不更新模板,或者如果它们在 ngAfterContentInit 之后发出

java - BufferedImages 数组错误?

java - 二维对象数组的 NullPointerException

python-3.x - Python 在生产环境中从命令式转向函数式