Javascript 如何使此函数在下一个代码中及时执行?

Javascript 如何使此函数在下一个代码中及时执行?,javascript,scope,Javascript,Scope,如何使这个垃圾变量及时被读取为shipmentObjs的值?我知道console.log将读取“undefined”,但我希望它在函数之后执行。怎么用?我尝试了几种方法,但我似乎无法找到一种方法来实现这一点 let garbage; db.scan({TableName: 'shipments'}, (err,shipments) => { if (err) console.error(err); // We got our shipments let shi

如何使这个垃圾变量及时被读取为shipmentObjs的值?我知道console.log将读取“undefined”,但我希望它在函数之后执行。怎么用?我尝试了几种方法,但我似乎无法找到一种方法来实现这一点

let garbage;

  db.scan({TableName: 'shipments'}, (err,shipments) => {
    if (err) console.error(err);
    // We got our shipments
    let shipmentObjs = shipments.Items;
    // Bring out the "done: false" shipments to display
    shipmentObjs = shipmentObjs.filter(obj => obj.done === false);
    garbage = shipmentObjs;
  });
});

// prints "undefined" . Must figure out a way to make it read shipmentObjs from the above code 
console.log(garbage);

要很好地处理上述代码,您需要将其放入db.scan功能中。

两件事。首先,如果您调用的是异步函数,那么顺序并不重要——db.scan()是哪个。正如@Amresh所说的,为此使用承诺或回调。代码的第二个问题是db.scan()函数内部发生的情况。我不知道您使用的是什么db库,但如果出现错误,很可能不会收到任何模式。因此,您的代码将在
shipmentObjs.filter
try上崩溃。你需要照顾好这部分。只需返回错误。

此代码完全正确。它会打印。你真正的问题是什么?对不起,我把代码改成了其他东西——真正的代码。我刚开始做了一个虚拟代码,让它更简单,但我想虚拟代码可以工作。这就是现在真正的代码。您需要了解
db.scan
是异步的。您的
console.log
发生在扫描开始之前。异步代码可以通过使用承诺或回调来处理。
console.log(garbage);