我想发送一个函数作为参数。当我在其他函数“ this”和其他函数(例如“ HttpClient”,“ urlBase”)中调用它时,则未定义。
我已经在Internet上搜索并找到关于bind()属性的信息,但是如果现在定义了“ this”,则其他属性仍未定义。因此,我将所需的所有属性都放在了bind()函数中,但对我来说似乎很糟糕...
这是我的服务功能,效果很好。
deleteEmpBusArea(employeeId: number, busAreaId: number){
let params = {
empId: employeeId,
bsarId: busAreaId
};
return this.http.delete(`${this.envConfig.baseUrl}/employee/delete-emp-bus-area`, {params: stringify(params)}).pipe(share());
}
这是我想为其提供另一个功能的函数:
deleteBusinessArea(area: BusinessArea){
this.utilitiesDialogService.deleteRowFromDialog(area, this.employeeService.deleteEmpBusArea.bind(this, this.http, this.envConfig, stringify));
}
以及先前调用的函数实现
deleteRowFromDialog(element: any, funcCalled: Function){
this.openDeleteDialog(element).afterClosed().pipe(
switchMap((isClosed) => {
if (isClosed === false) {
return funcCalled(element.id);
}
return EMPTY;
}),
takeUntil(this.unsubscribed)).subscribe(() => {
});
}
Stringify是.ts文件中的函数,其签名如下:
export function stringify(json: any): any {
///code implementation
}
我期望通过使用bind属性提供“ this”,“ this”将占用他所有的东西(“ this.http”,“ this.envConfig”等),而不是全部用.bind( )。提供所有这些绑定是否正确?
另外,stringify是一个导出函数,我无法在bind()属性中将其发送并给出错误:
A JS error occurred: Converting circular structure to JSON TypeError: Converting circular structure to JSON
答案 0 :(得分:1)
此answer有一个很好的例子。使用箭头功能指定。
defaultFunction(var: string, fun: (i: string) => number): number {
return fun(var);
}