
1 hienchu 2015-11-24 18:34:08 +08:00 async? |
2 loryyang 2015-11-24 18:37:02 +08:00 回调函数? |
3 lecher 2015-11-24 19:09:40 +08:00 via Android 封装一个回调处理 扔到线程去执行 |
4 k9982874 2015-11-24 19:12:38 +08:00 消息队列 |
5 larry618 2015-11-24 19:18:37 +08:00 via Android 使用 java 回调机制就可以了 |
6 funky OP |
8 felixzhu 2015-11-24 20:15:25 +08:00 要么 IO 复用,异步返回 要么直接返回,丢给后台进程处理,用户端那边每次重新获取状态 |
9 likuku 2015-11-24 23:57:10 +08:00 网络的问题,那就去改善网络品质嘛 |
10 FrankFang128 2015-11-25 02:49:57 +08:00 via Android 加 loading 动画 |
11 t895 2015-11-25 03:07:57 +08:00 @FrankFang128 笑尿,以前这么干过,结果被用户打死了 |
12 cnhongwei 2015-11-25 08:53:10 +08:00 封装一个回调异步处理,在页面上给用户一个提示就行了,你 sleep ,会让 http server 的连接池占满或 timeout 的。 |
13 fuxkcsdn 2015-11-25 08:58:47 +08:00 via iPhone 我们之前和一家供应商合作过,最开始以为是网络问题,又是换线路又是架海外代理,依然无果 最后 wget 打印详情发现卡在 wait response...卡了近 2/3 时间...(获取完整列表时,启用压缩情况下传输量是 3MB ,传输时间 10 秒左右, wait response 达到 50 秒...) |
14 wind4 2015-11-25 09:44:32 +08:00 参考 Azure 的设计,将任务丢到一个后台异步队列里面去执行,用户随时可以查看任务执行进度。 |
15 topkyo 2015-11-25 10:42:16 +08:00 异步消息队列处理这类问题额 |
16 aec4d 2015-11-25 10:50:08 +08:00 以 python web 框架性能对比为例 http://klen.github.io/py-frameworks-bench/ 这种情况异步请求模型就吊打多线程请求模型 当然这只是对比的单位时间内能响应的并发请求数 意味着并不能显著降低后端 web 服务器调用第三方服务的时间 所以还是像 10 楼那样加一个 loading 动画欺骗下用户比较好 你说的 sleep 差不多就是异步请求模型 至于任务队列 这完全是另外一种模型嘛 比如用户上传一个下载链接 然后你的服务器去下载 这个时候需要告知用户下载进度 不过我觉得题主的疑问是第一种情况 |
17 wate 2015-11-25 11:03:44 +08:00 sleep is stupid |
18 funky OP @aec4d 你说的不错。现在的做法就是 loading 动画。这里考虑到用户体验,最好是同步的,但是认证需需要花费时间。只能做 loading 等待状态更新,至于任务队列在后端管理上用的多,在这个场景下个人感觉不是很合适 |
19 aec4d 2015-11-25 11:11:38 +08:00 @funky 我试过即使 20 秒的等待 只要动画效果够炫酷 都是能忍受的 如果超过了。。。。个人感觉还是想别的办法优化吧 比如网络。。。毕竟是同步的 |
20 hienchu 2015-11-25 14:07:21 +08:00 @funky 异步只能解决阻塞的问题,的确不能直接等同于用户体验。从逻辑上来讲,如果用户在获得返回之前必须什么都不能做(比如认证),那就只能优化认证过程。 |
21 Tink PRO 消息队列处理 |