gpt4 book ai didi

javascript - 使用 async wait 进行 firebase 查询

转载 作者:行者123 更新时间:2023-12-03 01:05:32 25 4
gpt4 key购买 nike

目前我正在执行 Firebase 查询并记录值,但是我想在函数之外操作我的值,这很棘手,因为 Firebase 查询是异步的。我想这样做,因为随着代码变得越来越复杂,将我的所有代码都嵌套在这个查询中会变得非常困惑。

目前:我的数据库如下所示:

{
"test" : "Hello from my database!"
}

我的代码:

var config = {
apiKey: "",
authDomain: "",
databaseURL: "",
projectId: "",
storageBucket: "",
messagingSenderId: ""
};

firebase.initializeApp(config);
database=firebase.database();
var ref = database.ref('test');
var firebaseMsg ='';

ref.on('value',function(snap){
firebaseMsg=snap.val();
console.log(firebaseMsg);
});

但是,我希望能够做这样的事情:

var firebaseMsg ='';
//attempting async/await
ref.on('value',async function(snap){
firebaseMsg= await snap.val();

});

//outside of the ref.on query
console.log(firebaseMsg);

因此,console.log(或我选择用来操作 firebaseMsg 的其他代码)位于我的 ref.on 查询之外。

最佳答案

如果您想通过 on() 监听器在应用程序 UI 中反射(reflect)数据库中的更改,您必须在回调函数中执行此操作。

如果您的问题是编写一些“干净”的代码(即避免“将我的所有代码嵌套在该查询中”),您可以很好地使用一个函数,例如:

function sayHello(msg) {
console.log(msg);
//Update your UI as you wish with the value of msg
}

ref.on('value',function(snap) {
firebaseMsg = snap.val();
console.log(firebaseMsg);
sayHello(firebaseMsg);
});
<小时/>

请注意,如果您只需要从数据库读取一次(而不是连续监听),您可以使用 once() 方法,该方法返回一个 promise ,在这种情况下您可以使用 async/await。请参阅文档 here .

关于javascript - 使用 async wait 进行 firebase 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52422206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com