繁体   English   中英

使用Node.js服务新数据

[英]Serving New Data With 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. 您必须在概念上将静态内容与动态内容分开(稍后,您将通过nginx或apache提供静态内容,仅将动态内容保留给节点)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM