gpt4 book ai didi

JavaScript 设置公共(public)变量

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

我有一个关于在 JavaScript 中设置“公共(public)”变量的问题。这是我的代码:

var storeKey;
firebase.database().ref('stores').orderByChild('storeAddress').equalTo('Blk 167').once('value', function(snapshot) {
var storeData = snapshot.val();
if (storeData){
console.log('exists');
}else{
storeKey = firebase.database().ref('stores').push({
storeName : "store1",
storeAddress : "Blk 167"
}).getKey();

//console.log("STORE " + storeKey);
}
});

console.log("STORE " + storeKey);

在将新记录添加到 Firebase 之前,我正在检查该地址是否存在。但是,如果我将 console.log 放在最后一行,则会出现未定义的情况。如果我在 else 语句中打印出来,它只会返回一个值。

我想在其他地方需要该数据之前将 storeKey 分离出来,并且我不希望我的代码嵌套在 else 语句中。知道如何实现这一目标吗?

最佳答案

你的函数接受回调,console.log在回调之前被调用,这就是为什么它的未定义“解决”它的一种方法是使用promise。例如

const deferred = q.defer();
firebase.database().ref('stores').orderByChild('storeAddress').equalTo('Blk 167').once('value', function(snapshot) {
var storeData = snapshot.val();
if (storeData){
console.log('exists');
}else{
storeKey = firebase.database().ref('stores').push({
storeName : "store1",
storeAddress : "Blk 167"
}).getKey();

deferred.resolve(storeKey);
}
});

deferred.then(console.log)

关于JavaScript 设置公共(public)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45081092/

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