我正在使用这个本机脚本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,以便我可以让我的第二个语句等待它。
答案 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