【发布时间】:2019-04-26 11:36:14
【问题描述】:
祝大家感恩节快乐!我正在编写一个调用 DynamoDB 的 lambda 函数,但遇到了设计/实现问题。
我的代码结构如下:
exports.handler = function(event, context, callback) {
documentClient.batchGet(getParams, function(err, data) {
if (err) {
console.log(err);
} else {
...
while (1) {
documentClient.scan(scanParams, function(err, data)
{
if (err) {
console.log(err);
} else {
...
if (some condition) {
break;
}
}
}
}
}
我无法从 documentClient 的回调中调用 break。此外,我无法将 documentClient 回调内部的变量传递到外部,然后跳出 while 循环。我尝试在处理程序的范围内创建一个变量并在 documentClient 回调函数内为其分配一个值,但是一旦代码超出回调范围,该值就会被删除,并且该变量在处理程序范围内具有其原始值。
之所以会有while循环,是因为如果表很大,扫描会多试一次。
另外,另一个问题是我想在与处理程序相同的范围内进行回调,而不是在嵌套块内,如扫描 documentClient 的回调函数。但是,我似乎无法将任何数据或变量从嵌套块内部传递到外部。
我搜索并找不到有关此问题的任何文档。提前感谢您的阅读。
【问题讨论】:
-
实际上我再次尝试使用 var,这次我可以从回调函数内部更改它的值。但是,我认为如果我可以将函数传递给回调,而不是像 function(err, data) { ... } 那样以嵌套方式调用回调,代码会更简洁。我尝试传入一个函数而不是进行嵌套,但它无法获取从 documentClient 调用返回的错误和数据。
-
你用的是什么版本的node.js?
标签: javascript node.js amazon-web-services aws-lambda amazon-dynamodb