2017-02-22 13 views
0

目前,函数isEven和isOdd是为每个IF调用的。有没有一种方法只在IF的评估与函数的逻辑路径相对应时才调用函数?如何使用Observable.If如果没有调用函数

例:JSBin参考:http://jsbin.com/wegesaweti/1/edit?html,js,output

var isEven = function(x) { 
    console.log('function isEven called') 
    return Rx.Observable.return(x + ' is even'); 
};  
var isOdd = function(x) { 
    console.log('function isOdd called') 
    return Rx.Observable.return(x + ' is odd'); 
}; 
var source = Rx.Observable.range(1,4) 
    .flatMap((x) => Rx.Observable.if(
    function() { return x % 2; }, 
    isOdd(x), 
    isEven(x) 
));  
var subscription = source.subscribe(
    function (x) { 
     console.log('Next: ' + x); 
    }); 

电流输出:

function isOdd called 
function isEven called 
Next: 1 is odd 
function isOdd called 
function isEven called 
Next: 2 is even 
function isOdd called 
function isEven called 
Next: 3 is odd 
function isOdd called 
function isEven called 
Next: 4 is even 

预计输出

function isOdd called 
Next: 1 is odd 
function isEven called 
Next: 2 is even 
function isOdd called 
Next: 3 is odd 
function isEven called 
Next: 4 is even 

谢谢!在RXJS docuemntationthenSourceelseSource需要

回答

相关问题