С Днем Благодарения всех!Я пишу лямбда-функцию, которая вызывает DynamoDB, и я столкнулся с проблемой проектирования / реализации.
У меня следующая структура кода:
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;
}
}
}
}
}
Я не могу вызвать break
изнутри обратного вызова documentClient.Также я не могу передать переменные изнутри обратного вызова documentClient вовне, а затем выйти из цикла while.Я попытался создать переменную в области действия обработчика и присвоить ей значение внутри функции обратного вызова documentClient, но как только код выходит из области действия обратного вызова, это значение стирается, и переменная имеет свое первоначальное значение в области действия обработчика.
Причина, по которой существует цикл while, заключается в том, что при большой таблице сканирование займет более одной пробной версии.
Кроме того, еще одна проблема заключается в том, что я хочу сделать обратный вызов в той же области, что и обработчик, а не во вложенных блоках, как функция обратного вызова отсканированного documentClient.Однако я не могу передать какие-либо данные или переменную из вложенных блоков наружу.
Я искал и не могу найти никаких документов по этой проблеме.Заранее спасибо за чтение.