Javascript Promise.any()和Promise.race()之间有什么区别
Javascript Promise.any()和Promise.race()之间有什么区别,javascript,promise,Javascript,Promise,Promise.any()和Promise.race()之间有什么区别,它们是如何不同地使用的 从 另外,与Promise.race()不同,Promise.race()返回第一个固定值, 此方法返回第一个解析的值。此方法将忽略 所有被拒绝的承诺,直到第一个承诺解决为止 这就引出了,解决了和解决了之间的区别。这让我得到了MDN的承诺,然后让我得到了 定居不是一种状态,只是一种语言上的便利 所以我们有Promise.any和Promise.race来方便语言?i、 e.没有差异。这种平等的另一个
Promise.any()
和Promise.race()
之间有什么区别,它们是如何不同地使用的
从 另外,与Promise.race()不同,Promise.race()返回第一个固定值, 此方法返回第一个解析的值。此方法将忽略 所有被拒绝的承诺,直到第一个承诺解决为止 这就引出了,解决了和解决了之间的区别。这让我得到了MDN的承诺,然后让我得到了 定居不是一种状态,只是一种语言上的便利 所以我们有
Promise.any
和Promise.race
来方便语言?i、 e.没有差异。这种平等的另一个例子是“一个未解决的承诺必然是未决的。”以及“我们说,如果一个承诺没有未决,也就是说,如果它要么得到履行,要么被拒绝,那么它就得到了解决。”
因此,如果一个承诺得到了解决,那么它就不是未解决的,所以它不是悬而未决的。那么,如果它没有悬而未决,它就解决了。所以解决了===解决了。
承诺。种族
和承诺。任何
都做不同的事情:
Promise.race
一旦您提供给它的任何承诺得到满足,无论它们是否得到满足,都会立即得到解决
承诺。任何
都会在您提供的任何承诺兑现后立即结算,或者它们被全部拒绝,在这种情况下,它会被聚合错误
拒绝
主要区别是:
race
当你给它的第一个承诺被拒绝时,它的承诺被拒绝<代码>任何都不会,因为可能会实现另一个承诺
任何
承诺的拒绝原因将是一个聚合错误
,但种族
的拒绝原因将是被拒绝承诺的拒绝原因
promise.race
的承诺将被拒绝(因为第一个要结算的承诺被拒绝),来自promise.any的承诺将被履行(因为虽然第一个承诺被拒绝,但第二个承诺得到了履行)。例如:
const a=new Promise((u,reject)=>setTimeout(reject,100,new Error(“a”));
常数b=新承诺((解析)=>setTimeout(解析,200,“b”);
承诺。种族([a,b])。然后(
值=>{
log(`race:completed with${value}`);
},
原因=>{
log(`race:rejected with${reason.message}`);
}
);
承诺。任何([a,b])。然后(
值=>{
log(`any:completed with${value}`);
},
原因=>{
log(`any:rejected with${reason.errors.map({message}=>message.join()}`);
}
);
solved表示已完成,resolved表示已成功完成设置=已解决或已拒绝。resolved=未解决rejected@apokryfos-否,“已解决”表示承诺已解决或将由另一个承诺的结果解决。已解决的承诺仍然可以挂起。状态为挂起、已履行或已拒绝。@BenB我已用@apokryfospromise.resolve({then(){}})修复了MDN页
是一个已解决但尚未解决的承诺的最短示例。通常,您可以用另一个承诺来解决一个承诺,这意味着您无法再次解决它,但当另一个承诺仍在等待解决时,您的承诺也是如此。感谢所有代码示例。我怀疑这个答案将在未来几年对编码人员有用!