首页 > 解决方案 > 在 express/nodejs 应用程序中开始加载页面而无需等待异步功能

问题描述

如何开始加载页面而无需等待异步功能(大约需要 3 秒才能完成)?

我有一个使用 Express 和 EJS 作为我的视图引擎的 Node 应用程序。我希望能够开始渲染名为“send-money”的模板(见下文),而不必等待“结果”返回。

这就是我的样子(经过一些简化):

router.get("/sweden/poland/sek/pln/3000", async (req, res) => {

    const result = await findCheapestProvider('Sweden','Poland','SEK','PLN',3000) //takes ~3 seconds to return;

    res.render("send-money", result)
});

这个问题可以通过这个 URL 实时看到(它是瑞典语,所以让你的浏览器的“翻译成英语”功能成为你的朋友):https ://www.transferhero.se/skicka-pengar/sverige/polen/sek/pln /3000

我是编程新手,但我正在尝试通过我的这个副项目来学习。

标签: node.jsexpressejs

解决方案


根据路线的当前实施,我想不出一种方法来实现你所追求的。视图引擎必须具有“结果”才能呈现 html 并将其发送到浏览器。一种解决方案是使用来自服务的 html 页面的 ajax 调用来获取数据并显示它。所以会有两条路线,一条只提供 html 页面(带有 url 参数),另一种是 html 页面可以从中获取数据。该页面将在页面加载时运行 ajax 函数并检索数据。


推荐阅读