如何跳过前 2 个 promise rest 来解决

How to skip first 2 promise rest to resolve

如何跳过前 2 个 promise rest 来解析

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);
});

I would like to skip first two promise and wanted to get rest promises result how can i do that please guide

Output should be (2) ["This promise to resolve", "Resolve"] instead (4) [21, 110470116021, "This promise to resolve", "Resolve"]

嗯,也许只是

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, p2, p3]) {
  console.log(p3);
});
// expected output: Array ["foo"]

要建立在 AKX 的答案之上,您还可以将 rest 运算符与解构结合使用,以在前 2 个之后创建每个已解决承诺的迭代,如下所示:


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