찾다

 >  Q&A  >  본문

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

以 文件重命名 为例:

返回如下结果

{
  "errno": 0,
  "info": [],
  "request_id": 88137407060055336,
  "taskid": 307843054247316
}

可以联想到在server端建立了一个task, 并返回了taskid让客户端后续取状态来更新ui

#进行中的返回值
{
  "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元素

问题: 直接访问重命名接口不行吗? 为什么要这么设计, 好处是什么?

迷茫迷茫2802일 전901

모든 응답(3)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:50:35

    그 밖에 이해가 안 되는 부분이 있나요?

    첫 번째는 서버에 대한 이름 변경 신청을 시작하는 것입니다.
    서버가 작업을 시작합니다.
    이후 폴링은 작업이 완료되었는지 확인하는 것으로, 완료 후 프런트엔드에서 해당 작업을 수행하며, 실패할 경우 롤백 작업도 수행합니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:50:35

    이유 추측하기: 극단적인 경우 작업 시간이 오래 걸리고 즉시 반환되지 않을 수 있습니다. 작업이 완료되면 소켓 링크가 끊어져 최종 결과를 얻을 수 없는 경우가 있습니다. , 클라이언트가 최종 결과를 얻는지 확인할 수 있습니다.

    회신하다
    0
  • PHPz

    PHPz2017-04-18 10:50:35

    위 고려 사항 외에도 또 다른 매우 중요한 이유가 있을 수 있는데, 바로 동시성 압박입니다. 비동기식으로 만들어 동시성을 해결할 수 있습니다

    회신하다
    0
  • 취소회신하다