如何在 useEffect 方法中正确使用 async?

时间:2021-04-05 01:30:13

标签: javascript node.js

我在下面有这个代码

  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?

0 个答案:

没有答案