首页 > 解决方案 > .then 总是返回一个 promise 对象,如何将结果保存在变量中?

问题描述

你好我没有成功解决这个承诺,你能帮我理解我的错误吗?

export const onReadTranslationData = () => {
  const translations = database()
    .ref('/languages')
    .once('value')
    .then(snapshot => {
      const languages = { en: snapshot.child('en').val(), tr: snapshot.child('tr').val() };
    });
  return translations;
};

当我尝试 console.log(translations) 时,它总是给我一个承诺对象。

为什么它总是返回一个承诺对象?

标签: javascriptfirebasefirebase-realtime-databasepromise

解决方案


由于您要返回一个承诺,因此您必须使用它.then来获得结果

export const onReadTranslationData = () => {
  const translations = database()
    .ref('/languages')
    .once('value')
    .then(snapshot => {
      const languages = { en: snapshot.child('en').val(), tr: snapshot.child('tr').val() };
    });
  return translations;
};

translations.then((results) => {
  console.log('translations: ', results)
})


推荐阅读