Javascript 如何检索函数中变量的内容?

Javascript 如何检索函数中变量的内容?,javascript,reactjs,firebase,react-native,firebase-realtime-database,Javascript,Reactjs,Firebase,React Native,Firebase Realtime Database,我创建了这个函数: var IDOfUserToKill = 'tralala'; export function getIDOfUserToKill(userID, gameID) { let path = '/games/' + gameID + '/users/' + userID; fb.database().ref(path).on('value', snapshot => { IDOfUserToKill = ''; if (snapsho

我创建了这个函数:

var IDOfUserToKill = 'tralala';

export function getIDOfUserToKill(userID, gameID) {
  let path = '/games/' + gameID + '/users/' + userID;

  fb.database().ref(path).on('value', snapshot => {
      IDOfUserToKill = '';

      if (snapshot.val()) {
        IDOfUserToKill = snapshot.val().userToKill;
        console.log(IDOfUserToKill); // return the good ID
      }
    });
}

userID = IDOfUserToKill; // return "tralala" and not the good ID
 fb.database().ref(path).on('value', snapshot => {
  IDOfUserToKill = '';

  if (snapshot.val()) {
    IDOfUserToKill = snapshot.val().userToKill;
    console.log(IDOfUserToKill); // return the good ID
  }
});
然后我想在这个变量之外使用变量
IDOfUserToKill
。因为如果我使用
IDOfUserToKill
,它将返回在函数(tralala)之前定义的值,而不是ID

如何检索变量的内容?(我使用React Native)。

此函数:

var IDOfUserToKill = 'tralala';

export function getIDOfUserToKill(userID, gameID) {
  let path = '/games/' + gameID + '/users/' + userID;

  fb.database().ref(path).on('value', snapshot => {
      IDOfUserToKill = '';

      if (snapshot.val()) {
        IDOfUserToKill = snapshot.val().userToKill;
        console.log(IDOfUserToKill); // return the good ID
      }
    });
}

userID = IDOfUserToKill; // return "tralala" and not the good ID
 fb.database().ref(path).on('value', snapshot => {
  IDOfUserToKill = '';

  if (snapshot.val()) {
    IDOfUserToKill = snapshot.val().userToKill;
    console.log(IDOfUserToKill); // return the good ID
  }
});
是异步的,这意味着它在完成之前会转移到另一个任务

这就是为什么在
on()
内部可以获得数据库中的
id
,而在外部,这里是
userID=IDOfUserToKill
您将获得值
'tralala'

要了解有关非同步的更多信息,请检查以下内容:


fb.database().ref(path).on('value',snapshot=>{}
异步?因为这可以解释为什么不记录正确的值。在函数完成执行之前,您可能正在将
IDOfUserToKill
赋值给
userID
。为什么希望导出函数(注意,您没有调用它)将更改
IDOfUserToKill
的值吗?不,我只是导出了该函数,因为我正在另一个文件中使用它。那么如何恢复内容?您有任何示例吗?在这种情况下,它是否异步都无关紧要。OP定义了一个变量
IDOfUserToKill
,然后导出一个函数(不调用它)然后将
IDOfUserToKill
的值赋给另一个变量,这个变量的当前值当然是
IDOfUserToKill
,这个变量是
'tralala'
。@Jean这个答案对你有帮助吗?好的,我理解这个原理。那么我如何恢复内容呢?你有什么例子吗?@Jean在这里检查一下,和你有同样的问题e:如果你不明白,请告诉我。另外,请把这个答案改成正确的,这样人们就会知道它是有帮助的。我真的不明白,你能给我举一个函数的例子吗?