2016-07-08 3 views
0

Observable.bindCallbackメソッドを使用するときに2つのパラメータを適切にコールバックにマップするには、「セレクタ」関数を使用する必要がありますが、これを行う方法について説明するドキュメントは見つかりません。私はセレクタ関数が何を誤解しているかもしれないが、それでも文書化されるべきである。Observable.bindCallbackメソッドでRXJSセレクタ関数を使用するにはどうすればよいですか?

http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-bindCallback

function testLogin(username, password, callback){ 
    // ... 
    callback(param1, param2); 
} 

function selectorFunction(???) { 
    // ??? 
} 

function onTestLoginComplete(param1, param2) { 
    // ... 
} 

var observableFactory = Observable.bindCallback(testLogin, selectorFunction); 
var observable = observableFactory('username', 'password'); 
observable.subscribe((param1, param2) => onTestLoginComplete(param1, param2)); 

答えて

3

subscribe機能は今まで一つの引数を取ることができます。つまり、selector関数は、マルチドキュメントコールバックを単一の要素に変換することです。一般的には、これは引数をオブジェクトにパックすることを意味し、後でそれを分解することができます。

function testLogin(username, password, callback){ 
    // ... 
    callback(param1, param2); 
} 

//Convert this into a new object 
function selectorFunction(param1, param2) { 
    return {param1, param2}; 
} 

function onTestLoginComplete(param1, param2) { 
    // ... 
} 

var observableFactory = Observable.bindCallback(testLogin, selectorFunction); 
var observable = observableFactory('username', 'password'); 
//De-structure the argument when it is passed to subscribe. 
observable.subscribe(({param1, param2}) => onTestLoginComplete(param1, param2)); 
関連する問題