【问题标题】:How do I use the RXJS selector function in the Observable.bindCallback method?如何在 Observable.bindCallback 方法中使用 RXJS 选择器函数?
【发布时间】:2026-02-11 02:40:02
【问题描述】:

我相信,在使用Observable.bindCallback 方法时,要将两个参数正确映射回回调,您必须使用“选择器”函数,但我找不到解释如何执行此操作的文档。我可能对选择器函数的作用有误解,但还是应该记录在案。

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

【问题讨论】:

    标签: javascript angular rxjs observable


    【解决方案1】:

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

    【讨论】: