gpt4 book ai didi

javascript - NativeScript Firebase es6 promise 出现奇怪的行为

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

我正在尝试使用 Promise 链接 2 个 Firebase 查询,因为我需要第一个查询的结果才能获取第二个查询。以下是两个查询的结构:

查询值 A:

    private getValueA(){
var queryEvent = (result):void =>{
console.dump(result);
this._valueA = result.value;
}
return firebase.query(
queryEvent,
FirebaseValueAPath,
{
singleEvent : true,
orderBy : {
type: firebase.QueryOrderByType.CHILD,
value: 'since'
}
});
}

查询值 B:

    private getValueB{

let FirebaseValueBPath :string = this._valueA
var queryEvent = (result) :void =>{
console.dump(result);
if(result.value){
this._valueB = result.value;
}
}
return firebase.query(
queryEvent,
FirebaseValueBPath,
{
singleEvent : true,
orderBy : {
type : firebase.QueryOrderByType.CHILD,
value : 'since'
}
});
}
}

然后我尝试通过执行以下操作将它们链接在一起:

constructor(){
this.getValueA().then(
(success) :void => {
this.getValueB();
});
}

结果如下:

  1. 出于某种原因console.log(result)getValueB内函数在 console.log(result) 内之前打印getValueA 函数(为什么?)
  2. this.valueAgetValueB 中是 undefined,使我的查询毫无用处
  3. 应用崩溃

我的代码有什么问题吗?我应该使用另一种方法来解决这个问题吗?预先感谢您对此进行调查:)

最佳答案

使用 Promise 时,您必须在回调中解析结果。请找到下面的代码:

class GetData {
constructor() {
this.getValueA()
.then(resultA => this.getValueB(resultA));
}

getValueA() {
return new Promise<string>((resolve, reject) => {
firebase.query(
(result) => {
resolve(result.value); // Resolve => returns the result
},
FirebaseValueAPath,
{
singleEvent : true,
orderBy : {
type: firebase.QueryOrderByType.CHILD,
value: 'since'
}
}));
});
}

getValueB(valueA: string) {
return new Promise<string>((resolve, reject) => {
firebase.query(
(result) => {
resolve(result.value); // Resolve => returns the result
},
valueA,
{
singleEvent : true,
orderBy : {
type: firebase.QueryOrderByType.CHILD,
value: 'since'
}
}));
});
}
}

关于javascript - NativeScript Firebase es6 promise 出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39689543/

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