可取消的请求

来源:公众号:filcloud  作者:FilCloud  时间:2020-05-25

  亮点

  可取消的请求和新的浏览器数据存储 js-IPFS@0.44.0已经推出,支持取消请求,为浏览器提供更精简、更有效的数据存储!

  可取消的请求

  用户应该能够取消长期存在的异步 API 操作。例如,如果您要从网络中获取 CID 的内容,并且该 CID 无法解析,则您应该能够为请求设置超时值,此后将不再寻找该内容并返回控制权错误代码,描述发生了什么。

  这并不像JavaScript中那样简单明了,因为从API调用返回了一个Promise来解析一段内容,并且Promises规范不包含任何有关取消Promise的内容。

  但是,浏览器访存 API 具有 AbortSignal 的概念,可用于中止 Web 请求。它们通过 AbortController 进行交互:

  可取消的请求

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

  您也可以自己滚动:

  AbortSignal 一直从调用堆栈一直传递到支持 IPFS 的 libp2p 和 ipld 组件。在此初始发行版中,IPFS 层支持超时,而在以后的发行版中,libp2p 和 ipld 还将使用 AbortSignal 释放资源,并执行任何其他必要的清理,如果请求成功完成,则会执行这些清理。

  新的浏览器数据存储

  js-IPFS@0.44.0将新的数据存储区带到浏览器。在浏览器中,所有块和其他回购数据当前都存储在IndexedDB中,因为这是在写入时持久和查询大量用户数据的唯一方法。

  在 node 和 go-ipfs 中,LevelDB 一直是应用程序数据的首选数据存储(尽管块已存储在文件系统中),并且 go-IPFS 移至 Badger。

  在这个扩展的接口数据存储中,这是一种用于存储由 IPFS 使用的数据存储实现的键/值对的规范。在浏览器中,这是由 level-js 支持的数据存储级别,而后者由 IndexedDB 支持。

  为了在此处删除几层,我们创建了 datastore-idb 来实现接口数据存储规范,该规范由 IndexedDB 支持,而无需经过级别。

  这是什么意思?

  新的数据存储区更小,更快,并且升级是无缝的,因为它仍然处于 IndexedDB 的幕后:

  可取消的请求

  新功能

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

  ipfs.block.put现在接受pin符合 go-ipfs#3015 的参数

  修正错误

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

  不再在浏览器中生成具有所有 IPLD 格式的浏览器捆绑包(#3025)(e6079c1)

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

  删除对节点全局变量和内置插件的使用,以为我们为浏览器捆绑程序自动停止包含它们 而做的准备#2932

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

  接下来是什么?

  查看 js-ipfs 项目路线图,其中包含按我们希望其着陆顺序排列的标题功能。

  路线图中只标注了较大的功能,期望在路线图项目之间发布许多小的错误修正!

  非常感谢所有能够发布此版本的人

  @ 5310(2条评论)

  @achingbrain(55次提交,17个PR,3个问题,33条评论)

  @alanshaw(1问题,3评论)

  @aphelionz(2条评论)

  @AuHau(1条评论)

  @autonome(1条评论)

  @bertrandfalguiere(1条评论)

  @betamos(1个PR,1个问题,7条评论)

  @bluelovers(1 PR,1条评论)

  @carsonfarmer(1次提交)

  @ codecov-io(1条评论)

  @corporatepiyush(1期)

  @dapplion(2条评论)

  @dirkmc(2次提交)

  @Gozala(5个问题,15条评论)

  @hugomrdias(11提交,4 PR,1问题,17评论)

  @jacobheun(8提交,2 PR,1问题,8评论)

  @jakehemmerle(3条评论)

  @koivunej(1条评论)

  @lidel(1次提交,2条评论)

  @mdtanrikulu(1问题,1条评论)

  @mistakia(1个公关)

  @npfoss(1次提交,1个PR,1个问题)

  @ obo20(1次提交,1个PR,1条评论)

  @oed(1条评论)

  @RobertFischer(1条评论)

  @robertkiel(1条评论)

  @rvagg(1个PR,1条评论)

  @ spasimir21(1问题,3评论)

  @stensonb(1次提交,13个PR)

  @thattommyhall(1 PR,3条评论)

  @ typhu-xyz(1条评论)

  @ vasco-santos(14次提交,15个PR,2个问题,16条评论)

  @vmx(5提交,1 PR,2评论)

  @welcome(19条评论)

  @wemeetagain(2次提交,1个PR,3条评论)

  参与贡献

  您想为IPFS项目做贡献,又不知道如何做吗?好吧,有几个地方可以开始使用:

  检查 js-ipfs 存储库中help wanted标签的问题

  加入 IPFS 的“全力以赴”,自我介绍,并让我们知道您想在哪里做出贡献: https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands

  破解 IPFS,向我们展示您的成就!All Hands 呼叫也是进行演示的理想场所,请加入并向我们展示您创建的内容

  通过 https://discuss.ipfs.io/ 加入讨论,并帮助用户找到答案。

  加入 IPFS 核心实施每周同步,并参与其中!

  你有问题吗?

  最好的地方要问你关于IPFS的问题,它是如何工作的,以及你可以用它做的是在 discuss.ipfs.io。我们也可以在#ipfs Freenode 上的频道上找到。

  End

  非常感谢您对 IPFS&filecoin 项目的持续支持。我们很高兴继续与您一起,为人类信息建立一个强大的,去中心化和高效的基础。

  FilCloud 帮你迅速了解 IPFS 领域的热点技术和应用

  公众号:filcloud

相关信息:
您可能喜欢
Copyright © 2017 iIPFS.com IPFS/FileCoin资讯站