我在下面有这个代码
useEffect(() => {
let database = firebase.database();
database.ref().on('value', (snapshot) => {
setQuestions(snapshot.val());
console.log(snapshot.val());
})
console.log(questiona);
}, []);
输出首先是 questiona,然后是 snapshot.val().
null //questiona
(15) objects //snapshot.val()
因此,由于日志显示第二个 console.log 正在第一个之前执行,我现在知道我需要将其转换为异步函数。所以我把上面的代码改成了下面的样子
useEffect(() => {
let database = firebase.database();
database.ref().on('value', (snapshot) => {
async () => {
await setQuestions(snapshot.val());
console.log(snapshot.val());
console.log('hit');
}
})
console.log(questiona);
}, []);
问题是我滥用了 async 关键字,因为根本没有调用 async 块中的代码。我有一个 console.log 应该在执行时输出命中,但它永远不会显示在控制台上。如何在此块中正确使用 async 和 await?