{"id":460,"date":"2016-08-31T12:07:43","date_gmt":"2016-08-31T11:07:43","guid":{"rendered":"https:\/\/solidt.eu\/blog\/?p=460"},"modified":"2022-07-25T08:35:45","modified_gmt":"2022-07-25T07:35:45","slug":"javascript-promise-each-and-promise-map","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/javascript-promise-each-and-promise-map\/","title":{"rendered":"Javascript &#8211; Promise.each and Promise.map"},"content":{"rendered":"<p>Implementation:<\/p>\n<pre lang=\"javascript\">\r\nPromise.map = function(arr, fn) {\r\n    return Promise.all(arr.map(function(i) { return fn(i) }));\r\n};\r\n\r\nPromise.each = function(arr, fn) {\r\n    return arr.reduce(function(p, i) {\r\n        return p.then(function(r) {\r\n            return fn(i);\r\n        });\r\n    }, Promise.resolve());\r\n};\r\n<\/pre>\n<p>Example usage:<\/p>\n<pre lang=\"javascript\">\r\nvar subtaskAsync = function(id) {\r\n    return new Promise(function(resolve, reject) {\r\n        console.log(new Date().getTime(), 'subtaskAsync', id);\r\n        setTimeout(function() {\r\n            resolve(id);\r\n        }, 200);\r\n    });\r\n};\r\n\r\nvar taskAsync = function(id) {\r\n    console.log(new Date().getTime(), 'taskAsync', id);\r\n    return Promise.map([1, 2], subtaskAsync); \/\/ parallel\r\n};\r\n\r\nPromise.each([1, 2, 3], taskAsync); \/\/sequential\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Implementation: Promise.map = function(arr, fn) { return Promise.all(arr.map(function(i) { return fn(i) })); }; Promise.each = function(arr, fn) { return arr.reduce(function(p, i) { return p.then(function(r) { return fn(i); }); }, Promise.resolve()); }; Example usage: var subtaskAsync = function(id) { return new Promise(function(resolve, reject) { console.log(new Date().getTime(), &#8216;subtaskAsync&#8217;, id); setTimeout(function() { resolve(id); }, 200); }); }; var [&hellip;]<\/p>\n","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":[5,4],"tags":[],"class_list":["post-460","post","type-post","status-publish","format-standard","hentry","category-javascript","category-programming"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/460","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=460"}],"version-history":[{"count":1,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/460\/revisions"}],"predecessor-version":[{"id":461,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/460\/revisions\/461"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=460"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=460"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}