无法更新函数 AWS lambda 节点内的全局变量

Can't update global variable within function AWS lambda node

我正在尝试编写一个 AWS lambda 函数 webhook,它首先接收一个带有 ID 的 post 请求。然后一旦它有了 ID,它就会用它做很多其他的事情。在第一步中,函数内的所有内容都按预期工作,并且 console.log returns ID 的正确值,并且它正确显示在响应正文中。

但我无法从函数内更新全局变量 newDealId。第二个 console.log 始终 returns newDealId 的初始值为“”。这是为什么?

var newDealId = "";

exports.handler = (event) => {

    
    // Grab ID From New Deal Post Request
    newDealId = JSON.stringify(event.id); 
    console.log("DEAL ID:"+newDealId);
    
    const response = {
        statusCode: 200,
        body: newDealId, 
         
    };
    return response;
};

console.log("DEAL ID 2: "+newDealId); // always returns "" as value

console.log 函数返回 "" 因为当脚本是 运行 时,函数本身没有 运行 而是被定义了。 运行 的唯一表达式是

var newDeal = "";
/* and */
console.log("DEAL ID 2: " + newDeal);

然后当 lambda 被命中时,处理程序 运行s 仅定义函数 运行s。您的 console.log 语句在函数之外,因此不会 运行.

// this is what runs
exports.handler = (event) => {
    
    // Grab ID From New Deal Post Request
    newDealId = JSON.stringify(event.id); 
    console.log("DEAL ID:"+newDealId);
    
    const response = {
        statusCode: 200,
        body: newDealId, 
         
    };
    return response;
};

我会试试这个。它的行为应该更像您期望的那样。

exports.handler = (event) => {
    var newDealId = "";   

    function doesStuff() {
        // Grab ID From New Deal Post Request
        newDealId = JSON.stringify(event.id); 
        console.log("DEAL ID:"+newDealId);
    
        const response = {
            statusCode: 200,
            body: newDealId, 
         
        };
        return response;
    }

    console.log("DEAL ID 2: "+newDealId);

    return doesStuff();
};