轻量级实现承诺(Lightweight implementation of promises)

2019-08-01 13:38发布

我建立一个简单的图表工具。 当用户选择一个数据源和一个图表类型,两者的数据,并为特定的图(的.js)脚本被加载,然后将代码呈现图表。

目前我使用下列顺序:

  1. 加载图表脚本
  2. 加载数据
  3. 渲染图

为了提高性能,我想实现并行的承诺和负载脚本和数据。 像jQuery库是太大了,我需要(这个问题的一点是不要对这个争论),是否有更多的轻量化解决方案? 也许一个1-2 kb的库或教程? 再次,这是在平行只有两个动作一个非常基本的实现。

[更新]我upvoted所有的答复,因为他们看起来都好。 我做一些更多的测试后,我马上汇报。

Answer 1:

我内置这样的事情了一段时间后,我称之为“时,则”。 我想要的东西,会说,“加载所有这些事情,然后做一些事情的时候,他们就完成了”。

https://github.com/geuis/when-then

我被承诺的想法启发,但想要的东西简单一些简单的任务。



Answer 2:

我强烈建议您使用的实现承诺/ A规范 ,这是越来越JavaScript中做承诺的标准方式。 承诺更好地工作,当每个人都使用相同的味道,所以它在每个人的利益使用兼容的实现。

Q可能是最流行的,全功能的实现(这也将适应jQuery和其他不兼容的承诺),而当和RSVP应该是更“轻量级”。



Answer 3:

希望在我的2¢扔,因为一直在这里发展。 许已经在JavaScript本身到达和(根据将用于FF 30和铬33来实现此表 )。

虽然这几乎没有值得一提的,通常与淹没的地方“但它支持IE6?”,有微细化以及gzip压缩的填充工具2KB的这里是“基本上是的API重新映射rsvp.js 。”

由于jQuery的承诺是不是真的承诺 ,我同意这个家伙许诺语法在库不一致,我的观点是,本土的承诺都已经实现价值,即使用户的浏览器可能不支持他们呢。


编辑:在角和Firefox的插件,SDK,这两者都是非常相似的环境中使用的承诺后Q ,我更喜欢的语法和已阅读,它仍然比本机实现更快。



Answer 4:

检查递延它具有模块化的结构,你可以决定只是把核心和不应超过1KB大。

浏览器安装说明介绍如何创建几个简单的步骤,例如包



Answer 5:

如果你想它很轻的,你应该尝试SB-承诺 ,这是在MIT许可。 这只是一个几KB和API是与本地的承诺一致。

function myFunction(){
   return new Promise(function(resolve,reject){
     resolve({some:"data"});
   }
}
myFunction().then(function(result){
   console.log(result); // {some:"data"}
});


Answer 6:

尝试异步 。

它有方法来做业务平行,并在系列。 它最初被设计为在节点运行,但如今在浏览器的工作原理也是如此。

编辑补充:他们没有一个精缩版,因此完整的安吉拉卷是〜42KB。



Answer 7:

我创建了一个非常轻量级的承诺库。 它不是一个标准,但我不想2000线长的东西。

这是promisejs的一个分支,但我做了一些很好的补充。

下面是回购的链接。 https://github.com/taylorhakes/promise-light



文章来源: Lightweight implementation of promises