如何在Observable.bindCallback方法中使用RXJS选择器函数?

时间:2016-07-08 20:52:19

标签: javascript angular rxjs observable

我相信在使用Observable.bindCallback方法时,为了让两个params正确映射回回调,你必须使用“selector”函数,但我找不到解释如何执行此操作的文档。我可能对选择器功能的作用有误解,但仍应记录下来。

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) );

1 个答案:

答案 0 :(得分: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) );