Creating a promise chain in a for loop
I would expect the code below to print one number on the console, then wait a second and then print another number. Instead, it prints all 10 numbers immediately and then waits ten seconds. What is the correct way to create a promise chain that behaves as described? function getProm(v) { return new Promise(resolve => { console.log(v); resolve(); }) } function Wait() { return new Promise(r => setTimeout(r, 1000)) } function createChain() { let a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]; let chain = Promise.resolve(); for (let i of a) { chain.then(()=>getProm(i)) .then(Wait) } return chain; }