使.then()函数返回另一个函数使用的promise

时间:2018-04-29 18:00:39

标签: javascript angular typescript promise

我正在使用这个本机脚本firebase插件,这使我使用此功能:

getValue() {
     var value;
     firebase.getValue('/companies')
         .then(result => {
             console.log(JSON.stringify(result));
             value = result;
             return result;

         })
         .catch(error => {
             console.log("Error: " + error);
             return error;
         });
     return value;
 }

如果我将其导入另一个文件并使用它:

var myValue = this.myFirebaseService.getValue();

如果我在第一次返回undefined时运行它,但第二次返回值。

我的问题是如何让firebase函数返回一个promise,以便我可以让我的第二个语句等待它。

2 个答案:

答案 0 :(得分:0)

您可以在从myValue块收到结果后初始化then

这样的事情:

var myValue;

function getValue() {
  return firebase.getValue('/companies');
}

myValue = getValue().then(result => {
    const value = JSON.stringify(result);
    console.log(value);
    return value;
  })
  .catch(error => {
    console.log("Error: " + error);
  });
}

答案 1 :(得分:0)

你所指的firebase函数正在返回一个promise。这就是为什么你可以在调用getValue函数后使用.then.catch

如果您从getValue()返回firebase承诺,请执行以下操作:

getValue(){
  return firebase.getValue('/companies');
}

您可以随时拨打getValue(),但在getValue()(这是一项承诺)得到解决后,您必须执行代码。像这样:

getValue().then(function(value) {
  console.log(value);
});

如果您不明白这一点,我会阅读承诺:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise