我从承诺中的Web服务检索数据并使用EJS显示它。问题是,在履行承诺之前不会显示HTTP页面,这是有道理的,因为我在“then”中调用了render。
有没有办法在没有“数据”的情况下显示HTTP页面,并在webService调用完成时显示“数据”?
var webService = new webService();
webService.GetData("https://somewebservice.com")
.then( (result) =>
{
let options: Object =
{
"data": result
};
this.render(req, res, "index", options);
});
答案 0 :(得分:1)
因此,这可能意味着您必须重新构建代码。但有一种叫做可观察的东西。它就像一个承诺,但你订阅了它,这意味着在你进行调用后,回调函数总是监视它并在返回任何内容时进行更新。这需要重组,但这里是教程的链接。
同样值得注意的是,您的代码可能需要重新构建,页面需要加载,然后调用数据,如果这是您想要处理的方式。
如果有帮助,请告诉我。
https://medium.com/@benlesh/learning-observable-by-building-observable-d5da57405d87
答案 1 :(得分:0)
我最终得到的解决方案是:
<body>
上有一个onLoad处理程序,使用'$ .getJSON'在我的服务器上调用JSON API 这样加载并显示页面,然后onLoad处理程序启动并处理Web服务并更新页面。
然而,我希望所有这些都是透明的,如果EJS可以通过一个简单的任务来处理所有这些事情,那将会很棒。