Typescript 在RXJS6和DWR中正确使用bindCallback
我目前使用的Typescript 在RXJS6和DWR中正确使用bindCallback,typescript,callback,rxjs,dwr,Typescript,Callback,Rxjs,Dwr,我目前使用的bindCallback方法如下(现已弃用): 除此之外,我还有另一个问题。如果我手动调用someFunction: var callFn = function(data) {...} var warnFn = function(data) {...} var errFn = function(data) {...} Foo.someFunction(id, {callback: callFn, warningHandler: warnFn, errorHandler: errFn}
bindCallback
方法如下(现已弃用):
除此之外,我还有另一个问题。如果我手动调用someFunction
:
var callFn = function(data) {...}
var warnFn = function(data) {...}
var errFn = function(data) {...}
Foo.someFunction(id, {callback: callFn, warningHandler: warnFn, errorHandler: errFn})
它将正确地抛出成功、警告和错误。我没有创建这个回调函数(有很多回调函数),也无法更改它们。这还不够
我如何修改它来处理所有三个(成功、警告、错误)回调并作为可观察对象返回?警告和错误都可能引发错误。来自
bindCallback
文档
输入是一个函数func,带有一些参数,最后一个参数
必须是func在完成时调用的回调函数
如果我正确理解你的代码
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
,但会发送到流。当前代码可以工作,但仅用于成功回调。这也适用于Foo.someFunction(id,function(data){…})我想这就是bindCallback
工作的原因。someFunction
的签名是什么?你的问题是什么?实际上是DWR函数Foo.someFunction=函数(p0,p1,p2,48){…}代码>其中p0-p2是参数,_48是回调函数,得到了大约150个这样的函数。这个回调可以以某种方式返回一个或三个回调,如上面的示例所示。我仍然不确定您想知道什么。您的问题不包含实际问题。如果现在更有意义,请添加一些信息
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)
});
});