如何解决如何让我的方法返回回调?
我正在尝试使用 java binance api 为交易机器人编码。 我想做的是使用异步客户端从库中创建一个方法来获取数据/烛台然后返回它。
我的问题是异步客户端将响应返回给回调,我现在知道如何处理它,使我的方法返回数据,如下例所示:
public List<Candlestick> asyncGetCandles(){
//get the data
return response /**List<Candlestick>response*/
}
这是我目前得到的:
public void asyncGetCandles() throws ParseException,IOException {
BinanceapiclientFactory factory = BinanceapiclientFactory.newInstance();
BinanceApiAsyncRestClient asyncclient = factory.newAsyncRestClient();
long start = dateTime.startOfListing();
long Now = System.currentTimeMillis();
BinanceApiCallback<List<Candlestick>> callback = response -> {
System.out.println(response);//prints 1000 candles
};
asyncclient.getCandlestickBars("BTCUSDT",CandlestickInterval.HOURLY,1000,start,Now,callback);
/**How to return the response here?*/
}
任何有关如何执行此操作的帮助将不胜感激!
解决方法
它应该看起来像这样:
package stackoverflow;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
public class ReturnAsyncCallback {
interface BinanceApiCallback<T> { // either this usecase with interface
BinanceApiCallback<T> run(String response);
}
abstract class BinanceApiCallback2<T> { // or this usecase with abstract base class
abstract BinanceApiCallback<T> run(String response);
}
static class Candlestick {
}
public BinanceApiCallback<List<Candlestick>> asyncGetCandles() throws ParseException,IOException {
final BinanceApiClientFactory factory = BinanceApiClientFactory.newInstance();
final BinanceApiAsyncRestClient asyncClient = factory.newAsyncRestClient();
final long start = dateTime.startOfListing();
final long now = System.currentTimeMillis();
final BinanceApiCallback<List<Candlestick>> callback = (response) -> {
System.out.println(response);//prints 1000 candles
};
asyncClient.getCandlestickBars("BTCUSDT",CandlestickInterval.HOURLY,1000,start,now,callback);
/**How to return the response here?*/
return callback;
}
}
请注意,lambda 表达式有两种方式。两者都需要一个只有一个抽象(未实现)方法的类:
- 使用只有 1 个(抽象)方法的接口,可以有任意数量的默认方法。
- 使用具有完全一个抽象方法的抽象基类。
我的例子的附加说明:
- 内部类 BinanceApiCallback、BinanceApiCallback2 和 Candlestick 仅用于 http://sscce.org/
其他问题的提示:
- 您的代码不是 http://sscce.org/,因此我们很难回答。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。