无法更新函数 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();
};
我正在尝试编写一个 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();
};