首先,我尝试使用Result
进行投射(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>
);
}
}
答案 0 :(得分:0)
我不确定为什么它会说“循环推理”,但badRequest()
似乎有Result
类型而deleteDummy().map(result-> ok())
的类型为Promise<Result>
。它们彼此不兼容。
如果您的回调导致了承诺的结果,则必须使用flatMap
。您可以使用pure
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());
});
}