Java F.承诺-循环推理
起初,我试着用结果来表达Java F.承诺-循环推理,java,playframework,promise,Java,Playframework,Promise,起初,我试着用结果来表达 (Result) deleteDummy(). 它会让你感到无法施展的痛苦 但是当我改为ok()时,它说的是循环推理 我有点搞糊涂了。它一直在说循环推理。这似乎是不兼容的回报。。。。有什么帮助吗 public class Delete_Dummy { public static F.Promise<Result> delete() { F.Promise<Boolean> promise = isDummyThere(
(Result) deleteDummy().
它会让你感到无法施展的痛苦
但是当我改为ok()时,它说的是循环推理
我有点搞糊涂了。它一直在说循环推理。这似乎是不兼容的回报。。。。有什么帮助吗
public class Delete_Dummy {
public static F.Promise<Result> delete() {
F.Promise<Boolean> promise = isDummyThere(); //rest call to check the exist of the dummy
return promise.map(aBoolean ->
{
if(!aBoolean) {
return badRequest("No..i'm not there");
}
return deleteDummy().map(result-> ok()); //<=cyclic inference <<<<
});
}
private static F.Promise<Result> deleteDummy() {
String url = "some url";
return WS.url(url)
.delete()
.map(response -> {
if (response.getStatus() == NO_CONTENT) {
return ok("OK..deleted");
}
return badRequest("you are bad.");
} // end of Function<WS>
);
}
}
公共类删除\u伪{
公共静态F.承诺删除(){
F.Promise Promise=isDummyThere();//用于检查虚拟对象是否存在的rest调用
返回承诺图(aBoolean->
{
如果(!aBoolean){
返回请求(“不,我不在那里”);
}
返回deletemdum().map(result->ok());//我不确定它为什么会说“循环推理”,但是badRequest()
似乎有类型result
,而deletemdum().map(result->ok())
有类型Promise
。它们彼此不兼容
如果您有一个回调,它本身会产生一个承诺的结果,则必须使用。您可以使用以下命令将其与If-else中的非承诺值组合:
公共静态F.承诺删除(){
F.Promise Promise=isDummyThere();//用于检查虚拟对象是否存在的rest调用
返回承诺。平面地图(aBoolean->{
如果(!aBoolean){
返回F.Promise.pure(请求错误(“不,我不在”);
}
返回deleteDummy().map(结果->确定());
});
}
谢谢,老兄。我想我忽略了…在带有/DeletedDummy的坏请求上..起初,我试图返回isDummyThere的承诺..但是,似乎无法检索结果体..然后,我必须创建另一个方法来返回承诺以解决此限制。。。
public static F.Promise<Result> delete() {
F.Promise<Boolean> promise = isDummyThere(); //rest call to check the exist of the dummy
return promise.flatMap(aBoolean -> {
if (!aBoolean) {
return F.Promise.pure(badRequest("No..i'm not there"));
}
return deleteDummy().map(result-> ok());
});
}