我正在构建一个简单的图表工具。当用户选择数据源和图表类型时,将加载特定图表(.js)的数据和脚本,然后代码呈现图表。
目前我使用以下序列:
为了提高性能,我想实现promises并并行加载脚本和数据。像jQuery这样的库对我的需求来说太大了(问题的关键不在于争论),是否有更轻量级的解决方案?也许一个1-2 kb的库,或者一个教程?同样,这是一个非常基本的实现,只有两个并行动作。
[更新]我赞成所有回复,因为它们看起来都很棒。在我做了更多测试之后,我会报告回来。
答案 0 :(得分:13)
我强烈建议使用Promises/A specification的实现,这正在成为在JavaScript中进行承诺的标准方式。当每个人都使用相同的风格时,Promise会更好地工作,因此使用兼容的实现符合每个人的利益。
答案 1 :(得分:7)
因为这里有一个发展,所以想要投入我的2美分。 Promises have arrived natively in JavaScript并将针对FF 30和Chrome 33实施(根据this table)。
虽然在一个通常充斥着“但它是否支持IE6?”的地方几乎不值得一提,但是有一个2kb的缩小和gzip压缩填充here“基本上是rsvp.js的API重映射。 “
由于jQuery承诺aren't really promises,并且我同意this guy承诺语法在库之间不一致,我的观点是本机承诺已经值得实现,即使用户的浏览器可能不支持他们呢。
编辑:在Angular和Firefox addon-SDK的上下文中使用Promise后,两者都与Q非常相似,我更喜欢这种语法并且已经读过它仍然比本机实现更快。
答案 2 :(得分:4)
我建立了类似的东西,我称之为“当时”。我想要一些可以说“加载所有这些东西,然后在完成后做点什么”的东西。
https://github.com/geuis/when-then
我受到了承诺的启发,但想要一些简单的任务更简单。
答案 3 :(得分:3)
检查Deferred它是否具有模块化构建,您可以决定采用核心,并且不应超过1kb。
Browser install instructions解释了如何通过几个简单的步骤创建此类包
答案 4 :(得分:1)
如果你想要它非常轻量级,你应该尝试sb-promise,它在MIT许可下。它只有几kbs,并且与本机Promise API兼容。
function myFunction(){
return new Promise(function(resolve,reject){
resolve({some:"data"});
}
}
myFunction().then(function(result){
console.log(result); // {some:"data"}
});
答案 5 :(得分:0)
答案 6 :(得分:0)
我创建了一个非常轻量级的promise库。它不符合A标准,但我不想要2,000行长。
这是一个promisejs的分支,但我做了一些不错的补充。