{"id":1872,"date":"2019-02-14T14:14:11","date_gmt":"2019-02-14T13:14:11","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=1872"},"modified":"2019-02-22T14:41:48","modified_gmt":"2019-02-22T13:41:48","slug":"wait-for-promises-in-series-not-parallel","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/wait-for-promises-in-series-not-parallel\/","title":{"rendered":"Wait for Promises in series (not parallel)"},"content":{"rendered":"\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">(() => {\n\tconst getPromise = (v, time) => {\n      return new Promise(resolve => {\n      \tconsole.log('running', v);\n      \tsetTimeout(() => {\n        \tconsole.log('ending', v);\n        \tresolve(v)\n        }, time)\n      });\n  };\n\n  Promise.each = (arr, fn) => {\n     return arr.reduce((prev, cur, i) => prev.then(() => fn(cur, i)), Promise.resolve());\n  };\n\n  Promise.allSeries = (arrOfFn) => {\n      const results = arrOfFn.map(x => null);\n      return Promise.each(arrOfFn, \n      \t\t(fn, i) => Promise.resolve(fn()).then((r) => results[i] = r))\n      \t\t.then(() => results);\n  };\n\n  Promise.allSeriesWithBluebird = (arrOfFn) => Promise.mapSeries(arrOfFn, f => f());\n\n  \/\/ Attention: Expects an array of functions returning a promise,\n  \/\/ not a regular array of promises\n  Promise.allSeries([\n      () => getPromise('A', 500),\n      () => getPromise('B', 400),\n      () => getPromise('C', 300),\n      () => getPromise('D', 200),\n      () => getPromise('E', 100),\n      () => getPromise('F', 50),\n      () => getPromise('G', 40),\n      () => getPromise('H', 30)\n  ]).then((results) => {\n      console.log('results', results);\n  });\n})();\n<\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1872","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/1872","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=1872"}],"version-history":[{"count":11,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/1872\/revisions"}],"predecessor-version":[{"id":1908,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/1872\/revisions\/1908"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=1872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=1872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=1872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}