无需等待 API 响应即可更改图标状态。 (标记为收藏功能)

Posted

技术标签:

【中文标题】无需等待 API 响应即可更改图标状态。 (标记为收藏功能)【英文标题】:Changing state of icons without waiting for the API response. (Mark as favorite functionality) 【发布时间】:2018-07-18 20:54:14 【问题描述】:

我正在快速创建一个应用程序,我想在其中实现“标记为收藏”功能。基本上我有一个目前清晰的心形图标。当用户点击它时,它会变成橙色(就像 Instagram 中的心形图标(类似选项)的工作方式一样) 当我点击该图标时,一个呼叫会转到服务器,当它返回成功响应时,心形图标变为橙色。但是这个流程平均需要 3 到 4 秒,而在 Instagram、Facebook 或任何其他此类应用程序中,这件事会立即发生。此外,如果用户反复点击图标,喜欢的计数器会完美地递增/递减,但在我的应用程序中,如果我这样做,服务器调用(标记和取消标记图标的同时调用)将崩溃并且应用程序将崩溃。

我想通过以下方式来做:

当用户点击图标时,立即更改其颜色,而无需 等待成功响应,假设成功 会有回应。但这根本不是一个好方法,因为如果 服务器无法处理请求(由于任何原因) 心脏的颜色会从透明变为橙色,然后再次 清晰,看起来会很奇怪。

在响应来自服务器之前显示活动指示器 但同样,如果用户想要标记列表中的多个项目,他 将不得不看到指标并等待它们中的每一个,它 看起来会很笨拙。

所以我想要一个体面的解决方案来解决我的问题。任何帮助,将不胜感激。提前致谢。

【问题讨论】:

User DispatchQueue.main.execute // Change Your UI after response 线程更改按钮的 UI。在主线程中检查响应后编写代码。 详细说明您的解决方案将做什么,因为我是 ios 新手 您正在调用 API,所以它与后台线程一起工作。当 API 响应返回时,您需要更改 UI,因此 UI 始终与主队列一起使用。如果您在没有主队列的情况下更改它,则更改需要时间取决于应用性能。 【参考方案1】:

在请求开始时将图标设置为橙色的第一种方法对我来说似乎没问题,因为没有人喜欢等待喜欢被保存。看这个案例就像在聊天中发送消息一样。发送后立即在聊天中看到消息,如果发送失败则显示相应状态

【讨论】:

以上是关于无需等待 API 响应即可更改图标状态。 (标记为收藏功能)的主要内容,如果未能解决你的问题,请参考以下文章

Google Maps API v3:如何动态更改标记图标?

无需等待 React JS 中的 API 数据即可进行渲染

PHP & jQuery ajax 调用无需等待响应

XState:等待调用函数的响应

Prisma 无需等待即可创建/更新

无需等待结果即可从Web API调用另一个Web API