อาร์เรย์แบบไดนามิกใน Promise.all [ซ้ำกัน]

หากเพิ่มสัญญาในอาร์เรย์หลังจาก Promise.all - มันจะถูกละเว้น

let pr = [];
let start = Date.now();

pr.push(new Promise((resolve) => {
    setTimeout(() => {
        resolve();
    }, 2000);
}));

Promise.all(pr).then(() => {
    console.log('All done' + (Date.now() - start));
});

pr.push(new Promise((resolve) => {
    setTimeout(() => {
        resolve();
    }, 4000);
}));

เสร็จทั้งหมด2000

ฉันจะทำอย่างไร?


person Alexey Vodolazhchenko    schedule 12.04.2018    source แหล่งที่มา
comment
แน่นอนว่ามันจะถูกละเลย คำสัญญายังไม่มีอยู่จริง ทำไมคุณไม่สามารถย้ายสิ่งนั้นไปหน้าการโทร Promise.all ได้? ทำงานได้ดี   -  person Bergi    schedule 12.04.2018
comment
stackoverflow.com/a/37819138/1048572   -  person Bergi    schedule 12.04.2018
comment
สัญญาจะถูกเพิ่มในขณะที่แอนิเมชั่นทำงาน ก่อนแอนิเมชั่น ฉันไม่ได้สัญญา: c   -  person Alexey Vodolazhchenko    schedule 12.04.2018
comment
คุณอาจต้องการแสดงโค้ดสำหรับปัญหาจริงของคุณ แอนิเมชันไม่ควรเพิ่มคำมั่นสัญญาให้กับสิ่งใดๆ แต่ควรให้คำมั่นสัญญากับทุกสิ่งตั้งแต่เริ่มต้นแล้ว ดูเพิ่มเติมที่สัญญาสำหรับสัญญาที่ยังไม่ได้สร้าง   -  person Bergi    schedule 12.04.2018
comment
ขอบคุณครับ ผมก็ทำแบบนี้ :)   -  person Alexey Vodolazhchenko    schedule 12.04.2018