Maison  >  Questions et réponses  >  le corps du texte

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元素

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

迷茫迷茫2722 Il y a quelques jours858

répondre à tous(3)je répondrai

  • 伊谢尔伦

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

    Vous avez été très clair. Y a-t-il autre chose que vous ne comprenez pas ?

    La première fois consiste à lancer une demande de changement de nom sur le serveur.
    Le serveur lancera la tâche.
    L'interrogation suivante consiste à vérifier si la tâche est terminée, et le front-end effectuera les opérations correspondantes une fois terminée. En cas d'échec, le front-end effectuera également les opérations de restauration.

    répondre
    0
  • PHP中文网

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

    Devinez la raison : dans des cas extrêmes, l'opération peut prendre beaucoup de temps et ne peut pas être renvoyée immédiatement. Une fois l'opération terminée, le lien socket peut avoir été déconnecté et le résultat final ne peut pas être obtenu. , cela peut garantir que le client obtient le résultat final.

    répondre
    0
  • PHPz

    PHPz2017-04-18 10:50:35

    En plus des considérations ci-dessus, il peut y avoir une autre raison très importante, à savoir la pression de la concurrence. Rendu asynchrone, il peut résoudre la concurrence

    répondre
    0
  • Annulerrépondre