以下のコードのスニペットは機能します (動作しているという意味では ;-)) が、せいぜい不十分なように見えます...
これをより構成可能にする方法、または少なくとも醜さを軽減する方法を誰かが提案できますか?
コードは、このページの例に基づいています: RxJS を使用して既存の API をラップする
function connect() {
return rx.Observable.create(function (observer) {
mongo.connect('mongodb://127.0.1:27017/things', function(err, db) {
if(err) observer.onError(err);
observer.onNext(db);
});
}).publish().refCount();
}
function getThings(db) {
return rx.Observable.create(function (observer) {
db.collection('things').find().toArray(function(err, results) {
if(err) observer.onError(err);
observer.onNext(results);
observer.onCompleted();
});
return function () {
db.close();
};
}).publish().refCount();
}
connect().subscribe(
function (db) {
getThings(db).subscribe(console.log);
}, function (err) {
console.log(err);
}
);