这是我的代码:
var items = [];
db.scan({TableName: "players"}, function(err, data) {
for (var i = 0; i < 10; i++) {
items.push(data.Items[i]);
}
});
我这样做的时候...
console.log(items);
...它显示:
[]
我这样做的时候...
setTimeout(function() {
console.log(items);
}, 1000);
...它显示:
(10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
。
是否有一种方法可以在没有setTimeout
的情况下获得正确的填充数组?
答案 0 :(得分:1)
我认为您误解了使用回调的意义。您的其他代码应放在回调的内部,例如
db.scan({ TableName: "players" }, function (err, data) {
var items = [];
for (var i = 0; i < 10; i++) {
items.push(data.Items[i]);
}
console.log(items);
});
答案 1 :(得分:1)
由于db.scan是回调函数,所以任何取决于db.scan结果的代码都应在回调中完成。