首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中使用vertx调用api 4次后再继续

如何在java中使用vertx调用api 4次后再继续
EN

Stack Overflow用户
提问于 2020-08-06 02:28:48
回答 1查看 169关注 0票数 0
代码语言:javascript
复制
vertx.setPeriodic(1000, id -> {
    //api call
    if (count == 4){
        vertx.cancelTime(id); 
    }
});

现在的问题是我不想要一个固定的1000ms时间,我只想调用api 4次,然后用最终的api响应进行进一步的处理,请帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-06 16:34:08

一种方法是使用递归方法。

因此,您可以将这样的东西实现为一个方便的入口点

代码语言:javascript
复制
private Future<YourResultType> callApiNTimes(final int repetitions) {
    final Promise<YourResultType> p = Promise.promise();

    recursiveApiCalls(p, 0, repetitions);

    return p.future();
}

按如下方式实现递归

代码语言:javascript
复制
private void recursiveApiCalls(final Promise<YourResultType> p, final int counter, final int maxRepetitions) {
    yourRawApiCall().onComplete(reply -> {
        if (reply.failed()) {
            p.fail(reply.cause());
            return;
        }

        if (counter < maxRepetitions) {
            recursiveApiCalls(p, counter + 1, maxRepetitions);
            return;
        }

        p.complete(reply.result());
    });
}

最后,实现yourRawApiCall,然后像这样使用它

代码语言:javascript
复制
callApiNTimes(4).onComplete(reply -> {
    if (reply.failed()) {
        // Something went wrong, do your error handling..
        return;
    }

    final YourResultType result = reply.result();

    // Do something with your result..
});

Antoher的方法是将您的API调用作为Futures放在一个列表中,并与CompositeFuture.allCompositeFuture.join、..而不是一个接一个。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63271426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档