我使用AWS JavaScript SDK来使用DynamoDB。
我编写了以下(简化)函数来获取我的数据库中的表 -
var AWS = require('aws-sdk');
var db = new AWS.DynamoDB();
function getTables() {
db.listTables(function(err, data) {
console.log(data);
return data;
});
}
当我执行以下操作时,我无法理解为什么 -
x = getTables();
x没有使用数据进行初始化(保持undefined
),但console.log(data)
会打印实际结果。
我意识到这是一个回调,但我成功打印了回复!它并不像我试图在函数外打印它,这会导致我尝试打印尚未初始化的东西。响应我初始化了data
变量,这意味着它应该打印然后返回!
我在这里缺少什么? 提前致谢
答案 0 :(得分:1)
有几个问题。首先,您没有从<input id="searchValue" type="text" placeholder="Search by Name" ng-model="ds.searchName" />
<li ng-repeat="employee in ds.employeeList | filter:{name:ds.searchName}">
<p>{{employee.name}}</p>
</li>
函数返回。所以x总是未定义的。
第二个问题是您正在尝试从回调函数返回数据,该函数仅在将来的某个时间执行,并将返回执行它的DynamoDB库函数。您必须对要传递给db.listTables的回调函数中的数据执行任何操作。数据被记录到控制台的原因是因为此时定义了数据。
以下是您要查看的示例。它试图解释数据库库的内部工作原理。
getTables