title: Creating a promise chain in a for loop
body: <p>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?</p>
  
  <pre><code>function getProm(v) {
      return new Promise(resolve =&gt; {
          console.log(v);
          resolve();
      })
  }
  
  function Wait() {
      return new Promise(r =&gt; 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(()=&gt;getProm(i))
              .then(Wait)
  
      }
      return chain;
  }
  
  
  createChain();
  </code></pre>