建议: 使 `render()` 为异步函数
作者: lordofthelake创建于 2020年1月19日更新于 2020年1月20日
正如我们在 node-sketch-bridge 的 PR 讨论中 所讨论的,我正在编写一个 makeImageDataFromUrl() 的“纯”实现,使用 fetch 和 @skpm/fs。然而,以这种方式实现时存在一个主要问题:fetch 是异步的,而整个渲染操作是同步的。现在,我看到两种解决方案:
- 我保留了现有实现中使用
NSData的部分,并保持所有操作同步。不出所料,NSData 文档 提供了一个巨大的警告,不要将其用于网络请求,因为如果网络速度慢或响应迟缓,可能会导致整个系统卡死。优点是,我可以保留现有的接口。缺点是,按照当前实现,可能会导致 Sketch 卡死,而且实现不够统一。 - 让
makeImageDataFromUrl返回一个 Promise,并使整个到render的函数链同步。这样我们就可以使用fetch,使整个过程在布局中包含多个图像时更快,并且通常不会卡死,但这是一个突破性的变化。 @mathieudutour 有什么想法吗?
内容来源: airbnb/react-sketchapp