我相信在使用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) );
答案 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) );