我有一个 ASP.NET API 方法,当客户端调用此方法时,我将运行 4 个任务,每个任务都会调用一个 url 收集数据并将其作为对象列表返回。现在每个任务需要不同的时间来完成,所以我正在寻找的是这样的。
- javascript AJAX 调用我的 API 方法
- API 方法运行 4 个任务并等待任何完成的任务并返回数据
- ajax再次回调API并查看哪些任务完成并再次获取数据并将其显示在浏览器上
现在我的解决方案是将任务返回的数据保存在内存数据库行 couchbase 中,然后让浏览器上的计时器调用 API 来检查是否添加了任何新数据,然后将其获取到所有数据任务已完成。
我的问题是。是否有其他解决方案。我不想使用 asp.net signalr
为了在这里清楚地表达我的想法
- 客户端调用API方法
- API 方法将要挂起的任务列表排队
- 每个作业都会调用另一个 API 获取数据,对其进行处理并将其记录到内存数据库中,我将使用 couchbase
- 当 My API 方法完成记录作业时,它会向客户端返回一个 key
- 客户端可以使用此 key 调用另一个 API 方法,该方法为他返回最近的数据
这个解决方案是针对这个问题的
- 我有一个 API 方法,可以使用多个酒店提供商搜索酒店
- 每个提供商都会返回数据,我稍后需要这些数据来处理这些数据并将其返回给客户端。
- 因为每个提供商都有自己的处理时间。有些提供商在 5 秒后给我回复,而其他一些提供商则在 30 秒后给我回复,有些甚至更长。
- 我不希望客户端等待所有提供程序完成,而是希望客户端尽快获得结果并将其显示在浏览器上,然后我可以每次去更新 UI 并检查是否有新的提供商已完成向我返回数据
最佳答案
使用 signalR 进行推送通知。数据准备好后,只需向客户端发送数据已准备就绪的推送通知。
关于javascript - 长时间运行的异步 API 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38126853/