为了账号安全,请及时绑定邮箱和手机立即绑定

web端百度网盘的一个操作为什么要分两次请求服务器, 有什么好处吗

web端百度网盘的一个操作为什么要分两次请求服务器, 有什么好处吗

三国纷争 2019-02-21 22:27:06
以 文件重命名 为例: 当完成重命名操作提交会到这个地址 https://pan.baidu.com/api/filemanager 返回如下结果 { "errno": 0, "info": [], "request_id": 88137407060055336, "taskid": 307843054247316 } 可以联想到在server端建立了一个task, 并返回了taskid让客户端后续取状态来更新ui 客户端轮训服务器的接口 https://pan.baidu.com/share/taskquery 来获取状态, 1秒一次请求, 服务器端返回结果如下: 分几种情况我总结了一下 #进行中的返回值 { "errno": 0, "request_id": 88137707954758994, "task_errno": 0, "status": "pending" } #进行中 { "errno": 0, "request_id": 88137707954758994, "task_errno": 0, "status": "running" } #操作成功的返回值 { "errno": 0, "request_id": 88138584419582326, "task_errno": 0, "status": "success", "list": [ { "from": "/test1/我的照片", "to": "/test1/我的照片2" } ], "total": 1 } 当 status 为success时候, 则轮询结束, 更新UI元素 问题: 直接访问重命名接口不行吗? 为什么要这么设计, 好处是什么?
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

你已经说的很清楚了啊,还有什么不明白的?

第一次就是向服务器发起改名申请。
服务器就开始任务。
后面的轮询都是在查询任务是否完成,完成了前端做相应操作,万一失败了,前端还要做回滚操作。

查看完整回答
反对 回复 2019-03-01
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

猜一下原因:极端情况下, 操作可能会耗时很久, 无法立即返回. 在操作完成的时候, socket链接可能已经断开, 无法获取到最终的结果. 设计成任务队列的方式, 能保证客户端获取到最终的结果.

查看完整回答
反对 回复 2019-03-01
?
Helenr

TA贡献1780条经验 获得超4个赞

除了上面的一些考虑,可能还有一个很重要的原因,那就是并发压力。做成异步,能很好解决并发

查看完整回答
反对 回复 2019-03-01
  • 3 回答
  • 0 关注
  • 738 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号