[email protected]的发布,能为我们带来什么?

[复制链接]
7637 |0
发表于 2020-5-28 21:00:30 | 显示全部楼层 |阅读模式

[email protected]支持取消请求和更精简的浏览器的数据存储啦,[email protected]到底是什么?给我们带来了多大的改变呢,就让我们一起看看吧!




可取消的请求

用户应该能够取消长时间的异步API操作。例如,如果你正在从网络上获取一个CID的内容,而这个CID是无法解析的,你应该能够为请求设置一个超时值,超时之后,内容将不再被寻找,控制权将被返回到你的代码中,并有一个描述发生了什么的错误消息。



这并不像在JavaScript中看起来那么简单,因为API调用的时候会返回一个Promise来解析一个内容,而Promises规范中并没有包含任何关于取消Promise的内容。

但是,浏览器的取证API有一个AbortSignal的概念,可以用来中止Web请求。它们通过AbortController进行交互:



Filecoin官方采取了这种方法,并将其集成到每一个API调用中,所以用户现在可以使用AbortControllers来取消请求了! 官方还使用了这种机制来timeout为每个API调用添加一个选项,该API内部使用AbortSignal来停止请求,并在指定的时间后抛出TimeoutError:


您也可以自己滚动:

AbortSignal会一路向下传递给支持IPFS的libp2p和ipld组件。在这个初始版本中,IPFS层支持超时,而在未来的版本中,libp2p和ipld将使用AbortSignal来释放资源,并执行任何其他必要的清理工作,如果请求成功完成,则会进行其他必要的清理。


新的浏览器数据存储

[email protected]给浏览器带来了一个新的数据存储库。在浏览器中,目前所有的块和其他repo数据都存储在IndexedDB中,因为在编写时,这是唯一可用来持久化和查询大量用户数据的方式。

在node和go-ipfs中,LevelDB一直是应用数据的首选数据存储体(虽然块已经存储在文件系统中),而go-IPFS也在向Badger转移。



从此,接口数据存储库(interface-datastore)应运而生的一种存储键/值对的规范,由IPFS使用的数据存储库实现。在浏览器中,这是datastore级的,由level-js支持,而后由indexedDB支持。

为了去除一些层,官方创建了datastore-idb,它实现了接口-datastore规范,由IndexedDB支持,而不通过level。


这是什么意思?

新的datastore更小,速度更快,而且升级是无缝的,因为它的引擎盖下仍然是IndexedDB:


新功能


可取消API调用 (#2993) (2B24F59),关闭#3015

• ipfs.block.put现在接受pin参数,与go-ipfs #3015一致


Fixed修正的错误


修复了浏览器脚本标签示例 (#3034) (ee8b769), 关闭了#3027



浏览器不再生成包含所有IPLD格式的浏览器软件包 (#3025) (e6079c1)

• typeof将超时传递给dag.get的错误(#3035)(026a542)



•删除节点球体和内建插件的使用,为官方在浏览器绑定程序停止自动包含它们做好准备 #2932

• 来源地图不再包含在生产版的ipfs/aegir#549中



下一步是什么?


以下是 js-ipfs 项目路线图,其中包含了官方希望的头条功能,按照Filecoin官方希望它们落地的顺序排列,路线图中只列出了大的功能,预计在路线图项目之间会有很多小的bug修复版本。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表