【问题标题】:TypeScript - Passing parameter in chained functionTypeScript - 在链式函数中传递参数
【发布时间】: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)
        })

谢谢。

【问题讨论】:

    标签: javascript node.js typescript


    【解决方案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); 
    });
    

    【讨论】:

      猜你喜欢
      • 2019-06-15
      • 1970-01-01
      • 2019-01-19
      • 2015-09-28
      • 1970-01-01
      • 2020-03-25
      • 2019-05-08
      • 2013-12-24
      • 1970-01-01
      相关资源
      最近更新 更多