.then函数内的Nodejs东西不会在函数外起作用



如下图所示,数组" ar& quot;只在.then()函数内工作。我怎样才能防止这种情况发生呢

let arr =[];
l.kategoriler.findAll({where:{server_id: "991656640401113118"}}).then(a =>{
a.map(b =>{
arr.push(b.kategori)
})
console.log(arr) //right array return
})
console.log(arr) // returns []

发生这种情况是因为console.log在异步运行的dbquery完成之前运行。当使用。then时,无论你想对这些值做什么,都应该在操作的回调函数中进行。

实现你想要的一个更简洁的方法是使用async-await。你的代码结构会改变一点。

let arr =[];
let a = await l.kategoriler.findAll({where:{server_id: "991656640401113118"}})
a.forEach(b =>{
arr.push(b.kategori)
})
console.log(arr)

包含此代码片段的函数必须是async函数,否则会遇到错误。

如果你需要,你可以在这里阅读async-await: https://javascript.info/async-await

最新更新