/* * promiseSerial resolves Promises sequentially. * @example * const urls = ['/url1', '/url2', '/url3'] * const funcs = urls.map(url => () => $.ajax(url)) * * promiseSerial(funcs) * .then(console.log) * .catch(console.error) */ const promiseSerial = funcs => funcs.reduce((promise, func) => promise.then(result => func().then(Array.prototype.concat.bind(result))), Promise.resolve([])) // some url's to resolve const urls = ['/url1', '/url2', '/url3'] // convert each url to a function that returns a promise const funcs = urls.map(url => () => $.ajax(url)) // execute Promises in serial promiseSerial(funcs) .then(console.log.bind(console)) .catch(console.error.bind(console))