首页 > 代码库 > 请问如何等待异步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调用返回结果后再将结果返回给主进程?