我正在尝试使用一个现有的类,该类以回调的形式返回数据。通话就像这样-
class Validator{
validate(){
DataProvider.getInstance(new DataListener(){
@Override
void onDataReady(String data){
//Do something with data
}
});
}
return //data when the above call is finished
}
我想要一种干净的方法来返回异步调用完成时应返回的数据。放置while循环并检查数据是一种明显但不干净的方法。我可以使用RxJava来实现吗?
注意:验证函数可以在调用耗时的情况下等待
答案 0 :(得分:1)
就个人而言,RxJava过于矫kill过正。您需要做的就是将延续函数作为参数传递
class Validator {
void validate(DataListener dl){
DataProvider.getInstance(dl);
}
现在,无论您在哪里调用此方法,都请放入new DataListener
中。不要将validate()
的结果分配给变量
答案 1 :(得分:0)
如果您不想使用RxJava,并且只想从validate方法返回一个值,则可以通过创建一个接口来实现:
public interface ResultsListener{
public void onResult(String data);
public void onFailed();
}
public void validate(ResultListener callback){
DataProvider.getInstance(new DataListener(){
@Override
void onDataReady(String data){
//Do something with data
callback.onResult(data);
}
});
}
当您调用validate()时,您可以执行以下操作:
validate(new ResultsListener() {
@override
void onResult(String valid) {
// Do something with the returned data
}
@override
void onFailed() {
// something failed
}
});
希望这会有所帮助!