亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在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 關注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號