TypeScript - 在链式函数中传递参数

Posted

技术标签:

【中文标题】TypeScript - 在链式函数中传递参数【英文标题】:TypeScript - Passing parameter in chained function 【发布时间】:2022-01-17 11:37:25 【问题描述】:

在 node.js 中,我使用来自 child_processexec 调用脚本。

当处于关闭状态时,我想检查是否有任何错误,以便我可以返回它,但是我似乎无法在第二个函数 on() 中访问 error

谁能解释一下我如何传递它。

exec('myScript.sh',
        (error: any, stdout: any, stderr: any) =>  ).on('close', () => 
            console.log(error)
        )

谢谢。

【问题讨论】:

【参考方案1】:

您需要将其存储在回调函数之外。如果您查看 ES5 等效项:

exec("myScript.sh", function(error, stdout, stderr) 
    // Do nothing
).on("close", function() 
    // Cannot access error here
);

您可以看到error 的作用域对于exec 的第二个参数的匿名回调函数是本地的。您可以在 onclose 回调函数中访问它,方法是将其存储在该函数可访问的范围内,如下所示:

let execError = "";

exec("myScript.sh", function(error, stdout, stderr) 
    execError = error;
).on("close", function() 
    console.log(execError);
);

或者用你原来的符号(ES6):

let execError: any = "";

exec("myScript.sh", (error: any, stdout: any, stderr: any) =>  
    execError = error; 
).on("close", () =>  
    console.log(execError); 
);

【讨论】:

以上是关于TypeScript - 在链式函数中传递参数的主要内容,如果未能解决你的问题,请参考以下文章

将数组传递给 TypeScript 中的可变参数函数

TypeScript 函数

如何将参数从 Dart 传递到用 Typescript 编写的 Cloud 函数,它还给了我错误代码 UNAUTHENTICATED

如何在链式函数中将选定元素传递给“this”

如何将参数传递到链式 Laravel Eloquent 关系中的位置

在 TypeScript 中将数组作为参数传递