有没有办法通过 while 循环内 api 的 Mono.fromCallable() 的 return 值更新局部变量?

Is there a way to update a local variable through Mono.fromCallable()'s return value of an api inside a while loop?

我需要多次运行 GET 请求,直到GET 的return 是一个空数组。 目前我一直在用一个全局的 receivedAllApiData 变量来做这件事,如果它是一个空数组,我会在 getApiValues 中更新它。但是我需要在本地方法中找到一种方法来执行此操作。 mono.fromCallable 有没有办法改变局部变量?

while (!receivedAllApiData && offsetAmount < MAX_REQUEST_FALLBACK) {
            int offset = offset;
            Mono.fromCallable(() -> Api.getApiValues(Id, offset, LIMIT, property))
                    .map(this::getApiValues)
                    .subscribe(this::buildStructure, this::ErrorCounter);
            offsetAmount += LIMIT;
        }

也许有更好的方法来 运行 多次调用?

使用 atomicBoolean,您可以更新 map 函数内的值,如下所示。

       AtomicBoolean receivedAllApiData = new AtomicBoolean(false);

        while (!!receivedAllApiData.get() && offsetAmount < MAX_REQUEST_FALLBACK) {
            int offset = offsetAmount;
            Mono.fromCallable(() -> Api.getApiValues(Id, offset, LIMIT, property))
                    .map(listOfValues -> {
                        List<Values> nonNullListOfValues = CollectionUtils.isEmpty(listOfValues) ? emptyList() : listOfValues;
                        receivedAllApiData.set(nonNullListOfValues.isEmpty());
                        return nonNullListOfValues;
                    })
                    .subscribe(this::buildStructure, this::ErrorCounter);
            offsetAmount += LIMIT;
        }