gpt4 book ai didi

java - 检索对象时,Parse 查询是依次运行还是同时运行?

转载 作者:行者123 更新时间:2023-12-01 10:34:37 24 4
gpt4 key购买 nike

我的 Activity 中有两个查询,想知道它们是一个接一个执行还是同时执行,因为第二个查询返回一个空列表。在我的第一个查询中,我使用 objectId 检索 ParseObject,然后将其设置为类变量。在我的第二个查询中,我使用设置的 ParseObject 来查找“Answers”类中的所有对象(“Question”是指向 Question“类中的对象的指针)。但是,第二个查询似乎已经开始这样它会返回一个空的对象列表,因为第一个查询中的 ParseObject 尚未设置。我该如何让查询一个接一个地运行,以便首先设置变量?或者是否有另一种方法来解决这个问题?

  ParseObject question;
ParseQuery<ParseObject> query = ParseQuery.getQuery("Question");
query.getInBackground(questionId, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
if(e==null){
question = object;
} else {
System.out.println(e);
}

}
});


ParseQuery<ParseObject> answerQuery = ParseQuery.getQuery("Answers");
answerQuery.whereEqualTo("Question", question);
answerQuery.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> answers, ParseException e) {
if(e==null){


} else {
System.out.println(e);
}

}
});

最佳答案

是的,这是在后台线程中完成的。您需要使 answerQuery 查找依赖于 question 查找的完成。您可以创建另一种方法来执行答案查找,如下所示。

ParseQuery<ParseObject> query = ParseQuery.getQuery("Question");
query.getInBackground(questionId, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
if(e==null){
queryAnswers(object);
} else {
System.out.println(e);
}

}
});

private void queryAnswers(ParseObject question) {
ParseQuery<ParseObject> answerQuery = ParseQuery.getQuery("Answers");
answerQuery.whereEqualTo("Question", question);
answerQuery.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> answers, ParseException e) {
if(e==null){
// do what you want with the answers...
} else {
System.out.println(e);
}

}
});
}

关于java - 检索对象时,Parse 查询是依次运行还是同时运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34846261/

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