Web:在进行慢速服务器端呼叫后,我们如何在客户端上显示内容?

时间:2015-09-12 20:14:46

标签: javascript json web

我正在开发一个Web应用程序,我目前正在做这样的事情:

Page1.php发布到Page2.php。

Page2.php包含一个包含2个Javascript文件的HTML文件。第一个Javascript文件使用AJAX调用来触发Page3.php。第二个Javascript文件侦听Result.json以获得结果。

Page3.php调用Python脚本,Task.py。

Task.py大约需要15分钟才能运行,将结果写入Result.json,我需要在Page2.php上显示。

  1. 这里的问题是第一,因为Task.py是如此昂贵的电话,我最终在Chrome上的Page2.php和Chrome弹出窗口询问我是否要杀死或等待页面加载并且网页最终变得没有反应(Times Out)。
  2. 结果,我无法在页面上显示存储在Result.json中的结果。

    1. 我遇到的另一个问题是我正在执行的Task.py文件似乎是一个阻塞调用,所以当我的第一个Javascript进行AJAX调用时,它会阻止我的第二个Javascript监听Result.json的结果(当Javascript进行AJAX调用时,它会在那里等待,直到它得到响应)。因此,即使JSON文件中已有内容,在第一次AJAX调用返回之前它也不会接收它。
    2. Listening Javascript文件如下所示:

       while(true){
          result = setTimeout(myFunction, 60000);
      
          if(result === true){
              console.log("Quitting the loop");
              break;
          }
      }
      

      其中myFunction解析Json文件并操纵DOM以显示内容。

      任何建议?

1 个答案:

答案 0 :(得分:1)

您可以使用Server Push / Websocket。如果您的服务器已准备好提供数据,它可以通知客户端获取数据。只需搜索socket.io / nodejs。

第一个Ajax调用启动第3页,并将事件侦听器设置为服务器推送消息。如果它收到消息,只需获取Result.json的内容。