RxJS:拆分来自 Observable.fromPromise 的数组结果
RxJS: Splitting an array result from Observable.fromPromise
我在这里使用 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');
});
我在这里使用 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');
});