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我已用@apokryfos
    promise.resolve({then(){}})修复了MDN页
    是一个已解决但尚未解决的承诺的最短示例。通常,您可以用另一个承诺来解决一个承诺,这意味着您无法再次解决它,但当另一个承诺仍在等待解决时,您的承诺也是如此。感谢所有代码示例。我怀疑这个答案将在未来几年对编码人员有用!