NodeJS + EJS + Promise:页面直到履行承诺才显示

我从承诺中的Web服务中检索数据,并使用EJS进行显示。 问题是HTTP页面不会显示,直到承诺履行,这是有道理的,因为我叫“内部”渲染。

有没有办法让HTTP页面显示没有“数据”,并在webService调用完成时显示“数据”?

var webService = new webService(); webService.GetData("https://somewebservice.com") .then( (result) => { let options: Object = { "data": result }; this.render(req, res, "index", options); }); 

所以这可能意味着你必须重构你的代码。 但有一种叫做可观察的东西。 这就像一个承诺,但你订阅它,这意味着在你进行调用后,callback函数总是监视它,并在返回的时候更新。 这将需要重组,但这里是一个教程的链接。

也可以注意到,你的代码可能需要重新调整,页面将需要加载,然后调用数据,如果这是你想要处理它的方式。

让我知道这是否有帮助。

https://medium.com/@benlesh/learning-observable-by-building-observable-d5da57405d87

我最终的解决scheme是:

  1. 该页面在<body>上有一个onLoad处理程序,它使用'$ .getJSON'在我的服务器上调用JSON API。
  2. JSON API使用Promise调用Web服务,在最后的'then'中设置'res.json'
  3. API响应中的onLoad处理程序通过设置其文本来更新HTTP元素。

这样,页面被加载并显示,然后onLoad处理程序启动并处理Web服务并更新页面。

不过,我希望所有这些都是透明的,如果EJS可以通过简单的任务来处理所有这些事情,那将是非常好的。