如何跳过前2个承诺休息来解决

如何跳过前两个承诺休息来解决

const p1 = Promise.resolve(21);
const p2 = 110470116021;
const p3 = 'This promise to resolve';
const p4 = new Promise((resolve,reject) => { 
    setTimeout(() => {
        resolve('Resolve');
    },1000);
});

Promise.all([p1,p2,p3,p4]).then(values => { 
    console.log(values);
});
  

我想跳过前两个承诺,但想获得休息的承诺   结果我该怎么做,请指导

     

输出应为(2)[改为“此承诺将解决”,“已解决”]   (4)[21,110470116021,“这个解决的诺言”,“解决”]

cuijing6019 回答:如何跳过前2个承诺休息来解决

嗯,也许只是

Promise.all([p1,p2,p3,p4]).then(([r1,r2,r3,r4]) => { 
    console.log([r3,r4]);
});

?自然,p1p2仍将执行,但不会使用它们的值。

,

在获取价值时会破坏其结构,只是兑现您想要的承诺。

var promise1 = Promise.resolve(3);
var promise2 = 42;
var promise3 = new Promise(function(resolve,reject) {
  setTimeout(resolve,100,'foo');
});

Promise.all([promise1,promise2,promise3]).then(function([p1,p3]) {
  console.log(p3);
});
// expected output: Array ["foo"]
,

要以AKX的答案为基础,您还可以结合使用rest运算符和解构来在前2个之后创建每个已解决的Promise的可迭代对象,如下所示:


Promise.all([p1,p4,p5]).then(([discarded1,discarded2,...rest]) => {
  console.log(rest); // [p3 result,p4 result,p5 result]
})

本文链接:https://www.f2er.com/3037089.html

大家都在问