我有一个带有 Tomcat 8(不是 android)、Java 8 和 Firebase Admin 版本 5.2.0 的 Java Web 应用程序。 下面的代码工作正常,但我需要确保任务完成并返回一个值。
@POST
@Path("/verifyToken")
@Produces(MediaType.APPLICATION_JSON)
public Response verifyToken(@Context HttpHeaders headers,@Context HttpServletRequest request) {
try {
String auth = headers.getRequestHeader("authorization").get(0);
if (!auth.isEmpty()) {
System.out.println("logged auth token: " + auth);
}
// validate token
Task<FirebaseToken> task = FirebaseAuth.getInstance().verifyIdToken(auth)
.addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {
@Override
public void onSuccess(FirebaseToken decoded) {
String uid = decoded.getUid();
//do some stuff
}
});
/*
The return statement below shouldn't run unless "task" is
complete.
task has method isComplete()
*/
return Response.status(200).entity(user).build();
} catch (Exception e) {
e.printStackTrace();
System.out.println("Login Exception " + e.getMessage());
return Response.status(500).build();
}
}
任务对象(任务)有一个方法“isComplete()”。但是,它可能需要多次调用。如果第一次任务没有完成,代码应该知道如何等待并在以后再次调用它,直到达到一定次数。
我被困在如何构建逻辑以正确等待并重试,直到任务完成或事件退出条件。
怎么做?
最佳答案
我强烈建议您查看 Doug Stevenson 关于 Task
API 的一系列优秀博客文章。 https://firebase.googleblog.com/2016/10/become-a-firebase-taskmaster-part-4.html 中涵盖了这个具体问题。
解决方案似乎是Tasks.await(task)...
。
关于java - 如何检查 Java 中的 firebase 任务是否完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45046745/