jQuery.when() 和 ES6 的 Promise.all() 有什么区别?

8

我曾经用jQuery学习过Promises,但是之后几年没有做太多编程工作。现在,我想使用ES6原生的Promise来完成一些任务。

当时,Promises让我有点头疼。现在,由于我已经生疏,并且jQuery promises、其他promise库和新的原生JS promises之间存在细微和重大的差异,所以在尝试让这些东西工作时,我的头更加痛了。

似乎jQuery.when()Promise.all()做的事情相同,但我们是否应该注意一些重要的区别呢?


$document.querySelectorAll 是一样的吗? - Rayon
1
@Rayon:我以为 $ 在浏览器开发工具控制台中等同于 document.querySelector,而 $$ 则等同于 document.querySelectorAll。但是在 jQuery 中,$jQuery 对象。 - hippietrail
这就是我的观点!你怎么能把 jQueryJavaScript-Promise 进行比较呢? - Rayon
2
那我不明白你的意思。你可以比较任何东西。我并不是将整个jQuery与原生JS的promise进行比较,而是将jQuery的一个promise函数与原生JS的一个promise函数进行比较。 - hippietrail
1个回答

9

Promise.all() 接受一个由 Promises 或普通的 JS objects 组成的数组作为参数,因此您需要通过索引访问结果。

jQuery.when() 接受多个参数,这些参数是普通的 JS objectsjQuery Deferred,因此您可以通过变量名访问结果。


1
似乎Promise.all()的数组也可以是Promise或普通对象。如果是后者,它会在内部调用Promise.resolve()。但我还在摸索中... -: - hippietrail
1
哦,糟糕!我忘了提到那个:)我会编辑答案。 - neciu
谢谢。那就是我试图回忆/解决的问题,这也促使我提出了这个问题。(-: - hippietrail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接