2015-08-27 26 views
7

Ben burada RxJS kullanıyorum ve bu görünen basit bir sorun üzerinde görünmüyor gibi görünmüyor.RxJS: Bir dizi sonucu bölme Observable.fromPromise

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'); 
    }); 

Yukarıdaki kod, her dizi öğesini beklendiği gibi tükürür. Sadece tam bir dizi elde de aşağıda

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); 
    }); 
} 

(yani [ 1, 2, 3, 54, 3, 22, 323, 23, 11, 2 ]). RxJS sonucu bozmayacak mı? En azından bunun için bir mantığı olduğunu umardım.

Eğer

+0

* söz çözüldükten sonra bu dere * mutasyona olabilir dönüşümü arasında kesinlikle .. mesela çeşit gerçekleştirmek için istekli olacağını dizinin tamamını (akışta 1 öğe) alın ve akıştaki array.length öğelerine dönüştürün. –

cevap

15

Hayır o ayrı örtük onları kırmak olmaz ederiz. Onları dizi dümdüz hangi flatMap kullanmak bölmek isterseniz: Alternatif

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'); 
    }); 
+0

Teşekkürler! Ben tam olarak ne aradım –

+2

Güzel, ben 'flatMap' bir yinelenen düzleştirmek olacağını bilmiyordum. – Brandon

+0

Wohoo, mükemmel cevap, sorunumu çözdü, büyük teşekkürler @paulpdeniels – hhsadiq