循环填充数组时出现种族问题

时间:2018-10-08 20:41:25

标签: javascript

这是我的代码:

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的情况下获得正确的填充数组?

2 个答案:

答案 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结果的代码都应在回调中完成。