diff options
Diffstat (limited to 'school/node_modules/graphql/jsutils/promiseReduce.mjs')
-rw-r--r-- | school/node_modules/graphql/jsutils/promiseReduce.mjs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/school/node_modules/graphql/jsutils/promiseReduce.mjs b/school/node_modules/graphql/jsutils/promiseReduce.mjs new file mode 100644 index 0000000..db99d5d --- /dev/null +++ b/school/node_modules/graphql/jsutils/promiseReduce.mjs @@ -0,0 +1,16 @@ +import isPromise from "./isPromise.mjs"; +/** + * Similar to Array.prototype.reduce(), however the reducing callback may return + * a Promise, in which case reduction will continue after each promise resolves. + * + * If the callback does not return a Promise, then this function will also not + * return a Promise. + */ + +export default function promiseReduce(values, callback, initialValue) { + return values.reduce(function (previous, value) { + return isPromise(previous) ? previous.then(function (resolved) { + return callback(resolved, value); + }) : callback(previous, value); + }, initialValue); +} |