一个有返回值的函数里面有网络请求获取数据

_zw 2016-03-28 03:16:33
在android项目中遇到一个问题:有一个有返回值的函数,但是这个函数里面有了网络请求,如何确保网络请求完成了才继续执行呢?


public String getWeather(){

String weatherinfo = "";
// getWeatherByHttp()是通过网络请求获取天气信息
weatherinfo = getWeatherByHttp();

return weatherinfo;
}


请问如何确保getWeatherByHttp()执行完毕了再继续执行下面的return语句?
...全文
380 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主怎么解决的?
自由的刺猬 2016-03-29
  • 打赏
  • 举报
回复
多谢楼主 学习咯
_zw 2016-03-29
  • 打赏
  • 举报
回复
结贴分数弄错了,希望别介意。
_zw 2016-03-29
  • 打赏
  • 举报
回复
引用 6 楼 who_is_xiaoming 的回复:
楼主表达的很清楚了 我说的是很少出现你说的那种情况 本来想给你说1楼的那种方法的,但是又想到:万一getWeatherByHttp() 获取的数据本身就是空怎么办呢 所以 这个问题我目前也没想到什么好的解决方案 因为我平常也是这样用的,没加过判断
刚刚问了一个前辈,他跟我说,如果这种具有返回值的函数里面有异步的话,最好用回调函数来做,希望可以帮到你。
_zw 2016-03-29
  • 打赏
  • 举报
回复
引用 8 楼 shijing266 的回复:
[quote=引用 7 楼 u013172063 的回复:] [quote=引用 6 楼 who_is_xiaoming 的回复:] 楼主表达的很清楚了 我说的是很少出现你说的那种情况 本来想给你说1楼的那种方法的,但是又想到:万一getWeatherByHttp() 获取的数据本身就是空怎么办呢 所以 这个问题我目前也没想到什么好的解决方案 因为我平常也是这样用的,没加过判断
我也是啊,多次遇到这个问题了,所以想问问大家有什么好法子不。[/quote] 这种问题很常见啊,比如你买火车票,你调用了购买方法,但是你不能保证能购买成功吧? 5分钟之后调用一次查询状态的方法,连续3次调用查询失败,直接返回失败 你这里不是一样么? weatherinfo总不会直接返回空吧? 哪怕查不到信息,应该也有status或者什么message描述的吧? 验证三次获取失败(包括网络问题),直接返回失败,成功的直接return[/quote]嗯,我意识到会出现这个问题,但是没有处理这个问题的经验,所以一时半刻不知道怎么做。
  • 打赏
  • 举报
回复
引用 7 楼 u013172063 的回复:
[quote=引用 6 楼 who_is_xiaoming 的回复:] 楼主表达的很清楚了 我说的是很少出现你说的那种情况 本来想给你说1楼的那种方法的,但是又想到:万一getWeatherByHttp() 获取的数据本身就是空怎么办呢 所以 这个问题我目前也没想到什么好的解决方案 因为我平常也是这样用的,没加过判断
我也是啊,多次遇到这个问题了,所以想问问大家有什么好法子不。[/quote] 这种问题很常见啊,比如你买火车票,你调用了购买方法,但是你不能保证能购买成功吧? 5分钟之后调用一次查询状态的方法,连续3次调用查询失败,直接返回失败 你这里不是一样么? weatherinfo总不会直接返回空吧? 哪怕查不到信息,应该也有status或者什么message描述的吧? 验证三次获取失败(包括网络问题),直接返回失败,成功的直接return
_zw 2016-03-28
  • 打赏
  • 举报
回复
引用 6 楼 who_is_xiaoming 的回复:
楼主表达的很清楚了 我说的是很少出现你说的那种情况 本来想给你说1楼的那种方法的,但是又想到:万一getWeatherByHttp() 获取的数据本身就是空怎么办呢 所以 这个问题我目前也没想到什么好的解决方案 因为我平常也是这样用的,没加过判断
我也是啊,多次遇到这个问题了,所以想问问大家有什么好法子不。
xiaolong806124 2016-03-28
  • 打赏
  • 举报
回复
引用 3 楼 _zw的回复:
引用 1 楼 xiaolong806124 的回复:
添加一个判断weatherinfo是否为空的while循环试试
我也想这样试一下,但是好怕会奔溃,如果网络不稳定的话就可能死循环了。
如果你这个方法里有线程,那么会出现过早返回的情形,此时估计还是要加while了。如果没有线程,应该不会出现过早返回。
自由的刺猬 2016-03-28
  • 打赏
  • 举报
回复
楼主表达的很清楚了 我说的是很少出现你说的那种情况 本来想给你说1楼的那种方法的,但是又想到:万一getWeatherByHttp() 获取的数据本身就是空怎么办呢 所以 这个问题我目前也没想到什么好的解决方案 因为我平常也是这样用的,没加过判断
_zw 2016-03-28
  • 打赏
  • 举报
回复
引用 2 楼 who_is_xiaoming 的回复:
getWeatherByHttp() 你这个方法没执行完 就返回了? 有没有debug看看 我平常也是这样用的 没出现你说的这种情况
额,可能是我表达的不清楚。我是想避免出现getWeatherByHttp()还没执行完毕就返回了的情况。请问有好的解决思路吗?
_zw 2016-03-28
  • 打赏
  • 举报
回复
引用 1 楼 xiaolong806124 的回复:
添加一个判断weatherinfo是否为空的while循环试试
我也想这样试一下,但是好怕会奔溃,如果网络不稳定的话就可能死循环了。
自由的刺猬 2016-03-28
  • 打赏
  • 举报
回复
getWeatherByHttp() 你这个方法没执行完 就返回了? 有没有debug看看 我平常也是这样用的 没出现你说的这种情况
xiaolong806124 2016-03-28
  • 打赏
  • 举报
回复
添加一个判断weatherinfo是否为空的while循环试试

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧