現在、テキストファイルに行を読み書きする小さな永続キューライブラリを作成しています。ここで追加の方法は、例えば、次のとおりです。私はかなり厄介な見つけるものを、イベントエミッタとコールバック(またはイベントのエミッタとの約束を)Observablesを永続キューライブラリに実装する
Queue.prototype.add = function(line, cb){
getLock(this, err => {
if(err){
this.emit('error', err);
releaseLock(err, cb);
}
else{
fs.appendFile(this.filepath, line, err => {
err && this.emit('error', err);
releaseLock(err, cb);
});
}
});
};
支援しています。
つまり、キュー上の各メソッド(add、peek、remove)に対して、各呼び出しに固有の結果を返す/コールバックする必要があります。イベント・エミッターを使用することは、呼び出し元が、直前の呼び出しに固有ではない結果に作用する可能性があることを意味します。だからここでのコールバックや約束は不可欠のようだ。イベントエミッタだけを使うことはできない。
私は不思議に思うことは、何らかの形で、コールバックをイベントエミッタまたはイベントエミッタで約束しなければならないという問題を解決できるかどうかです。
私は、このイベント/非同期キューを実装する方法を見出すために、1つのタイプの非同期コールバックメカニズムを使用します。たぶんobservablesはここの答えではありませんが、私は良いデザインパターンを探しています。
おかげで、これは私を助けます(有用なものを!) - ものための方法がありますキューが出すすべてのイベント(オブザーバブルを使用)をリッスンするリスナ?少なくともこれはデバッグに便利です。 –
ああ、 "BehaviorSubject"を暗示することで既に私の質問に答えたと思います –
私はobservablesを使ってメソッドを連鎖させることはできないと思います。例えば:queue.add(line1).add(line2).add(line3).subscribeまたはそれは? –