回调打印数据但不返回

时间:2015-12-04 20:09:09

标签: javascript node.js amazon-web-services

我使用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变量,这意味着它应该打印然后返回!

我在这里缺少什么? 提前致谢

1 个答案:

答案 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