Ale*_*sky 1 javascript node.js promise rxjs async.js
代码可以简化为类似的东西,
function start(callback) {
one.on('ready', () => {
console.log('one server ready');
});
two.on('ready', () => {
console.log('two connection ready');
});
one.connect();
two.start();
}
Run Code Online (Sandbox Code Playgroud)
callback在两个服务进入就绪状态后,我需要调用它.什么是最好的模式?
更新:欢迎使用RxJS如何做到这一点:)
你要求承诺,让我们看看我们如何将一次性事件转换为承诺,即宣传发射器:
function ready(ee){
return new Promise(function(resolve) {
ee.on("ready", resolve); // resolve when ready
});
}
Run Code Online (Sandbox Code Playgroud)
哪个会让你这样做:
Promise.all([ready(one), ready(two)]).then(function(){
// both ready here
});
Run Code Online (Sandbox Code Playgroud)
你可以很容易地汇总承诺非常好:)
RxJS接近它的方法是使用zip或when/and/thenDo同步,并fromEvent管理EventEmitter
function ready(ee) {
return Rx.Observable.fromEvent(ee, 'ready');
}
//EITHER
var option1 = Rx.Observable.when(ready(one).and(ready(two))
.thenDo((first, second) => "Both Ready!"));
//OR
var option2 = Rx.Observable.zip(ready(one), ready(two),
(first, second) => "Both Ready!");
option1.take(1).subscribe(() => callback());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |