在 RXJS6 和 DWR 中正确使用 bindCallback
Properly using bindCallback with RXJS6 and DWR
我目前正在使用 bindCallback
以下(现已弃用)方式:
const someMapping = (data) => { return { ... }};
public someCall(id) {
// Foo.someFunction is function with callbacks
return this.toObservable(Foo.someFunction, someMapping, id);
}
private toObservable(func, mappingFunction, ...args: any[]) {
return bindCallback(func, mappingFunction)(...args);
}
除了这个被弃用之外,我还有另一个问题。如果我手动调用 someFunction
:
var callFn = function(data) {...}
var warnFn = function(data) {...}
var errFn = function(data) {...}
Foo.someFunction(id, {callback: callFn, warningHandler: warnFn, errorHandler: errFn})
它将正确抛出成功、警告和错误。这不是我创建的 DWR callback function (there are many of them), and I can't change them. Documentation 帮助不够。
我如何修改它以处理所有三个(成功、警告、错误)回调和 return 作为可观察对象?警告和错误都可能引发错误。
来自 bindCallback
文档
The input is a function func with some parameters, the last parameter
must be a callback function that func calls when it is done.
如果我理解正确你的代码
bindCallback(func, mappingFunction)
func
实际上是 Foo.someFunction
.
如果我查看 Foo.someFunction
这不是一个将回调函数作为其最后一个参数的函数,因为它是 bindCallback
所要求的。
所以我想知道这段代码是否有效。
最好的选择是创建自己的可观察对象。
public someCall(id) {
return new Observable(observer => {
Foo.someFunction(id,
{
callback: value => {
observer.next(value);
observer.complete();
},
warningHandler: warn => observer.error(warn),
errorHandler: error => observer.error(error)
});
});
它类似于手动调用 someFunction
,但会发送到流。
我目前正在使用 bindCallback
以下(现已弃用)方式:
const someMapping = (data) => { return { ... }};
public someCall(id) {
// Foo.someFunction is function with callbacks
return this.toObservable(Foo.someFunction, someMapping, id);
}
private toObservable(func, mappingFunction, ...args: any[]) {
return bindCallback(func, mappingFunction)(...args);
}
除了这个被弃用之外,我还有另一个问题。如果我手动调用 someFunction
:
var callFn = function(data) {...}
var warnFn = function(data) {...}
var errFn = function(data) {...}
Foo.someFunction(id, {callback: callFn, warningHandler: warnFn, errorHandler: errFn})
它将正确抛出成功、警告和错误。这不是我创建的 DWR callback function (there are many of them), and I can't change them. Documentation 帮助不够。
我如何修改它以处理所有三个(成功、警告、错误)回调和 return 作为可观察对象?警告和错误都可能引发错误。
来自 bindCallback
文档
The input is a function func with some parameters, the last parameter must be a callback function that func calls when it is done.
如果我理解正确你的代码
bindCallback(func, mappingFunction)
func
实际上是 Foo.someFunction
.
如果我查看 Foo.someFunction
这不是一个将回调函数作为其最后一个参数的函数,因为它是 bindCallback
所要求的。
所以我想知道这段代码是否有效。
最好的选择是创建自己的可观察对象。
public someCall(id) {
return new Observable(observer => {
Foo.someFunction(id,
{
callback: value => {
observer.next(value);
observer.complete();
},
warningHandler: warn => observer.error(warn),
errorHandler: error => observer.error(error)
});
});
它类似于手动调用 someFunction
,但会发送到流。