当前位置: 首页 > 知识库问答 >
问题:

如何以参数形式发送函数

谭健柏
2023-03-14

我想发送一个函数作为参数。当我在另一个函数中调用它“this”和其他类似“HttpClient”的函数时,“urlBase”是未定义的。

我在互联网上搜索并找到了关于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.env配置等),而不是将它们都写在. bind()中。它是正确的提供他们所有的绑定?

另外,stringify作为一个导出函数,我无法在bind()属性中发送它,并给出错误:

A JS error occurred: Converting circular structure to JSON TypeError: Converting circular structure to JSON

共有1个答案

郗俊能
2023-03-14

这个答案有一个很好的例子。使用箭头函数指定。

    defaultFunction(var: string, fun: (i: string) => number): number {
        return fun(var);
    }
 类似资料:
  • 函数取得的参数是你提供给函数的值,这样函数就可以利用这些值 做 一些事情。这些参数就像变量一样,只不过它们的值是在我们调用函数的时候定义的,而非在函数本身内赋值。 参数在函数定义的圆括号对内指定,用逗号分割。当我们调用函数的时候,我们以同样的方式提供值。注意我们使用过的术语——函数中的参数名称为 形参 而你提供给函数调用的值称为 实参 。 使用函数形参 例7.2 使用函数形参 #!/usr/bin

  • 问题内容: 我已经看到了许多在Java中通过套接字发送序列化数据的示例,但是我想要的只是发送一些简单的整数和字符串。而且,问题是我正在尝试将这些信息传递给用C编写的二进制文件。 因此,最重要的是:如何在Java中通过套接字发送一些字节? 问题答案: 我真的建议不要直接使用Java Sockets库。我发现Netty(来自JBoss)非常易于实现且功能强大。Netty ChannelBuffer类带

  • 问题内容: 我有以下功能: 我想知道,由于从未更改过,我应该通过使var全局(而不是每次都将其传递给函数)来优化它,还是Golang已经通过将它们作为写时复制传递来处理了? 编辑:我想我可以将切片作为指针传递,但是我仍然想知道写时复制行为(如果存在)以及通常是否应该担心按值或按指针传递。 问题答案: 从函数名称来看,即使考虑将参数移至全局变量以节省将参数作为参数传递所需的时间/空间,性能也不是那么

  • 问题内容: 我正在尝试做一个GET jQuery,我想发送一个参数。 这是我的功能: 这似乎行不通;使用时,我的servlet中没有空; 如果我在浏览器中输入链接http://www.myite.com/manageproducts.do?option=1,则该链接可以正常运行。 我也尝试过: 这也不起作用。 你能帮我么? 编辑: 也尝试过 仍然得到相同的结果。 问题答案: 如果您说它可以直接在浏

  • 问题内容: 我如何发送VitalGroupID和Temperature作为整数而不是String…。这是在我点击Submit按钮后形成的请求。 问题答案: 严格来说,json是无类型的,因此您不能将其作为整数发送,它必须是字符串。javascript对象不太严格,因此您拥有的对象将评估为javascript对象,但没有严格的json解析器将能够理解它。 最好的办法是使用parseInt在客户端转换

  • 问题内容: 是否可以从数组向JavaScript函数发送可变数量的参数? 我最近写了很多Python,能够接受并发送varargs是一个很棒的模式。例如 是否有可能在JavaScript发送待处理数组 作为 参数数组? 问题答案: 更新 :从ES6开始,您可以在调用函数时简单地使用 传播语法 : 由于ES6还希望将参数视为数组,因此还可以在参数列表中使用传播语法,例如: 并且可以将其与常规参数结合