【发布时间】:2016-12-16 05:15:13
【问题描述】:
目前正在编写一个小的持久队列库,它将读取/写入文本文件中的行。这里是add方法,例如:
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);
});
}
});
};
我觉得很尴尬的是支持事件发射器和回调(或事件发射器和承诺)。
换句话说,对于队列中的每个方法(添加、查看、删除),我需要返回/回调一个特定于每个调用的结果。使用事件发射器仅意味着调用者可能会针对并非特定于他们刚刚进行的调用的结果采取行动。所以这里的回调或承诺似乎势在必行——你不能只使用事件发射器。
我想知道的是 - observables 能否以某种方式解决必须将回调与事件发射器或承诺与事件发射器配对的问题?
我正在寻找一种方法来实现这个事件/异步队列,只有一种类型的异步回调机制。也许 observables 不是这里的答案,但我仍然在寻找一个好的设计模式。
【问题讨论】:
标签: javascript node.js rxjs observable