为了账号安全,请及时绑定邮箱和手机立即绑定

在firebase方法完成reactjs之前运行另一个方法的问题

在firebase方法完成reactjs之前运行另一个方法的问题

素胚勾勒不出你 2024-01-18 17:16:16
首先,这个 lambda 只需点击一个按钮即可工作。当我刷新页面时按下按钮时,我从控制台收到一条“未定义”消息。但是当我等待一小会儿(没有刷新页面)并再次单击按钮时,我可以在控制台上看到我期望的值。为此,我想到了使用睡眠功能,但我不想使用它。我可以使用多线程程序中使用的机制(例如锁定/同步)来解决这个问题吗?重要的是,这是什么原因?请注意:我是 React 和 Web 开发的新手。代码;const handleAddCarPark = () => {        var dbRef = fire.database().ref("foo/bar/qux");    var newParkID;    var copy_count;    dbRef.child("count").on("value", snapshot => {        newParkID = parseInt(snapshot.val()) + 1000000;        copy_count = parseInt(snapshot.val());    });    console.log(newParkID);}
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

on()是异步的并且立即返回。稍后,当查询完成时,回调将被调用,并且每次数据更改时都会再次调用。

在 JavaScript 中,只有一个线程。不需要锁定或多线程技术。所有代码和回调都在单个线程上调用。

您的代码应该只使用您传递给的回调内部的查询结果on()

如果您打算只查询一次而不监听可能随时间变化的结果,则应该使用once()而不是on()once()也是异步的,并返回带有查询结果的承诺。您应该学习如何使用这些 Promise,因为它们是您在 JavaScript 中处理异步结果的主要方式。


查看完整回答
反对 回复 2024-01-18
  • 1 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信