Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java F.承诺-循环推理_Java_Playframework_Promise - Fatal编程技术网

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());
    });
}