Javascript 如何在从外部api获取数据时将数据返回到客户端?
我有一个在节点中有后端的应用程序。假设有一个API端点(/get_menu)来获取所有菜单。Javascript 如何在从外部api获取数据时将数据返回到客户端?,javascript,android,node.js,api,Javascript,Android,Node.js,Api,我有一个在节点中有后端的应用程序。假设有一个API端点(/get_menu)来获取所有菜单。 当应用程序调用/get_menu时,我调用不同餐厅的外部API,当所有餐厅返回菜单时,我将其发送到应用程序。我用承诺来实现这一切 由于一些餐馆花费了很多时间,所以我希望在不断从餐馆API获取数据的同时将数据返回到应用程序。例如,若其中两个立即返回菜单,那个么我会将这两个返回到应用程序,在那个之后,当我继续获取其他API的数据时,我会继续将其发送到应用程序 使用单个API端点(即get_菜单)有哪些好方法
当应用程序调用/get_menu时,我调用不同餐厅的外部API,当所有餐厅返回菜单时,我将其发送到应用程序。我用承诺来实现这一切 由于一些餐馆花费了很多时间,所以我希望在不断从餐馆API获取数据的同时将数据返回到应用程序。例如,若其中两个立即返回菜单,那个么我会将这两个返回到应用程序,在那个之后,当我继续获取其他API的数据时,我会继续将其发送到应用程序
使用单个API端点(即get_菜单)有哪些好方法可以做到这一点?有几种解决方案
我建议为此使用基于redis的队列机制。您可以将每个API作为作业推送到该队列中
有一个非常好的基于redis的队列npm包。作业处理完成时,会通知一些事件。作业完成后,您可以将数据发送回应用程序。在客户端javascript上实现一个使用UUID(请求服务器获取菜单列表的唯一ID)的web worker 然后,服务器将创建一个数据库条目,为每个远程api请求分配一个唯一的id。然后,node.js立即将请求ID列表发送回客户端,并呈现。获取菜单的后台任务是单独运行的,每次结果出现时,它都存储在数据库中。客户端web工作者将定期请求它所需的UUID列表,服务器将使用已响应的UUID进行响应。一旦发送到客户端,数据将被删除,客户端将呈现结果,并从其请求列表中重新保存该uuid以检索数据 它本质上是一个粗糙的、不可靠的结果队列,只要服务器能够跟上所有请求,它就可以安全运行 另请参见互联网上的“事件来源”
如果您的主机非常可靠,则更现代的版本包括使用websocket和websocket服务器的类似实现。可能不使用
承诺。所有?