Javascript 使用Node.js提供新数据

Javascript 使用Node.js提供新数据,javascript,node.js,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_u

这个问题可能已经有答案了,但我找不到

假设我有一个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();
因此,终止与该特定用户的连接

谢谢你的帮助

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

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


  • var Promise=Promise=required(…)
    ?噢,谢谢!修正了它你可能不应该使用与类名相同的变量名,例如,
    Promise=newpromise()
    @JaredFarrish实际上NPM包自述文件建议我这样做,因为每次我创建一个新的Promise,语法都是
    var new\u Promise=newpromise(…)
    -请看右边,对不起,我想错了。