首页 > 代码库 > 请问如何等待异步API调用返回结果后再将结果返回给主进程?
请问如何等待异步API调用返回结果后再将结果返回给主进程?
============问题描述============
代码如下。
在主进程调用data.getData()后希望返回从API取得data,但是现在由于异步的关系resultSFSearchDataJSONParser直到主进程完全结束后才返回值,这样在getData()那里根本取不到data。
请问如何才能让getData()等待resultSFSearchDataJSONParser返回值以后自己才返回给主进程?
个人对handler多线程之类不太熟悉,能给我个简单的例子最好,谢谢啦。
class data
{
...
//取得数据
public Data getData(key) {
Data data = new Data();
params.put("word", key);
// 调用API取得数据
new DataLoader(){
@Override
public void resultSFSearchDataJSONParser(
SFSearchCountJSONParser sfSearchCountJSONParser, boolean isSuccess) {
// TODO Auto-generated method stub
super.resultSFSearchDataJSONParser(sfSearchCountJSONParser,isSuccess);
data = (Data)sfSearchCountJSONParser.result.get(0);
}
}.getData(this.key);
return data;
}
}
// API取得数据
class DataLoader implements SFSearchJSONParserDelegate {
Data data = new Data();
private SFSearchCountJSONParser searchJSONParser = null;
private HashMap<String, String> params = new HashMap<String, String>();
public void getData(String key) {
params.put("word", key);
searchJSONParser = new SFSearchCountJSONParser();
searchJSONParser.parserDelegate = this;
searchJSONParser.executeStockSearchCountByParams(params);
}
// 结果返回函数
@Override
public void resultSFSearchDataJSONParser(
SFSearchCountJSONParser sfSearchCountJSONParser, boolean isSuccess) {
// TODO Auto-generated method stub
data = (Data)sfSearchCountJSONParser.result.get(0);
}
}
============解决方案1============
你可以看看我在这个帖子里的回答,我在那里举例说明了怎么样用AsyncTask来把结果返回给UI线程。
请问如何等待异步API调用返回结果后再将结果返回给主进程?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。