使用Node.js提供新数据

时间:2014-10-25 15:03:45

标签: javascript node.js

可能已经有了这个问题的答案但我无法找到它。

假设我有一个Node.js网页做了一些耗时的API调用和计算:

var request = require('request'),
    Promise = require('es6-promise').Promise,
    is_open = require('./is_open');

// Fetch the name of every eatery
var api_url = 'url of some api';
request(api_url, function (error, response, body) {
  if (error) {
    console.log(error);
  } else if (!error && response.statusCode == 200) {
    // Good to go!
    var results = JSON.parse(body).events;
    results.(function (result) {
      // This line makes its own set of API calls
      is_open(result
        .then(function (output) {
          console.log(output);
          if (output == false) {
            console.log('CLOSED\n');
          } else {
            console.log(output);
            console.log();
          }
        })
        .catch(console.error);
    });
  } else {
    console.log('Returned an unknown error.');
    console.log(error);
    console.log(response);
    console.log(body);
  }
});

(我还没有创建一个真正的Web服务器,我只是通过命令行在本地运行应用程序。)

我希望Web服务器首先为每个用户提供加载页面。然后,一旦API调用完成且数据准备就绪,它应该将新数据发送给同一个用户。

我认为存在问题的原因是因为为了提供网页,您必须以:

结束
res.end();

因此结束与该特定用户的连接。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  1. 您必须在概念上将静态内容与动态内容分开(稍后您将使用nginx或apache提供静态,只留下动态到节点)

  2. 解决问题的最佳解决方案"是加载后第一个网页通过AJAX询问数据。理想情况下,您的节点应用程序将从第一页返回JSON到ajax查询,页面上的js将格式化创建DOM节点的结果。