[英]F.Promise - cyclic inference
一開始,我嘗試使用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>
);
}
}
我不確定為什么會說“循環推斷”,但是badRequest()
似乎具有Result
類型,而deleteDummy().map(result-> ok())
確實具有Promise<Result>
類型。 它們彼此不兼容。
如果您有一個回調,該回調本身會產生承諾的結果,則必須使用flatMap
。 您可以通過使用pure
將它與if-else中的非承諾值組合:
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());
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.