Call functions in parallel and store the results.


Call functions in parallel and store the results.

If you want to run async functions synchronously, check out one-by-one.js.

:cloud: Installation

# Using npm
npm install --save same-time

# Using yarn
yarn add same-time

:clipboard: Example

// Dependencies
var SameTime = require("same-time");

// Run functions same time and output the results
    function (cb) {
        setTimeout(function() {
            cb(null, "Something async")
        }, 3000);
  , function (cb) {
        setTimeout(function() {
            cb(new Error("An error."))
        }, 500);
  , function (cb) {
        setTimeout(function() {
            cb(null, null, 42)
        }, 2000);
], function (err, data, something) {
    console.log(err, data, something);
    // After 3 seconds
    // [ null, [Error: An error.], null ] [ 'Something async', , null ] [ , , 42 ]

:question: Get Help

There are few ways to get help:

  1. Please post questions on Stack Overflow. You can open issues with questions, as long you add a link to your Stack Overflow question.

  2. For bug reports and feature requests, open issues. :bug:

  3. For direct and quick help, you can use Codementor. :rocket:

:memo: Documentation

sameTime(arr, cb, store)

Calls functions in parallel and stores the results.


  • Array arr: An array of functions getting the callback parameter in the first argument.
  • Function cb: The callback function called with:
  • first parameter: null if there were no errors or an array containing the error values
  • 1 ... n parameters: arrays containing the callback results
  • Array store: An optional array to store the data in. If null, data won't be stored.


  • sameTime The sameTime function.

:yum: How to contribute

Have an idea? Found a bug? See how to contribute.

:sparkling_heart: Support my projects

I open-source almost everything I can, and I try to reply to everyone needing help using these projects. Obviously, this takes time. You can integrate and use these projects in your applications for free! You can even change the source code and redistribute (even resell it).

However, if you get some profit from this or just want to encourage me to continue creating stuff, there are few ways you can do it:

  • Starring and sharing the projects you like :rocket:

  • —I love books! I will remember you after years if you buy me one. :grin: :book:

  • —You can make one-time donations via PayPal. I'll probably buy a coffee tea. :tea:

  • —Set up a recurring monthly donation and you will get interesting news about what I'm doing (things that I don't share with everyone).

  • Bitcoin—You can send me bitcoins at this address (or scanning the code below): 1P9BRsmazNQcuyTxEqveUsnf5CERdq35V6

Thanks! :heart:

:dizzy: Where is this library used?

If you are using this library in one of your projects, add it in this list. :sparkles:

  • asyncer.js—Run groups of (a)sync functions.
  • babel-it—Babelify your code before npm publish.
  • blah—A command line tool to optimize the repetitive actions.
  • bloggify-markdown-adapter (by Bloggify)—Markdown adapter for Bloggify.
  • bloggify-plugin-class (by Bloggify)—A library for managing plugin objects.
  • bloggify-viewer (by Bloggify)—Connects the CRUD operations with the renderer.
  • cdnjs-importer—Easy way to import a library into CDNJS.
  • engine-builder (by jillix)—Engine composition parser.
  • engine-composition-crud (by jillix)—The default module for creating, reading, updating and deleting Engine instances.
  • engine-parser (by jillix)—Engine composition parser.
  • engine-tools (by jillix)—Engine Tools library and CLI app.
  • find-file-in-dirs—Find a file in different directories.
  • fork-me—Delete multiple GitHub repositories.
  • fs-file-tree—Get a directory file tree as an object.
  • gh-destroy—Delete multiple GitHub repositories.
  • gh-following—Fetches the users you follow but they don't follow you and the users that follow you but you don't.
  • gh-repeat—Repetitive actions on multiple GitHub repositories.
  • github-emojify—Emojify your GitHub repository descriptions.
  • github-labeller—Automagically create issue labels in your GitHub projects.
  • gm-tools—Friendly tools for interacting with GraphicsMagick.
  • gpm—npm + git = gpm - Install NPM packages and dependencies from git repositories.
  • img-ssim—Get the structural similarity between two images.
  • made-in—Get GitHub projects created by users from a specific location.
  • mongof—Sync MongoDB collections with JSON files.
  • nodeice—Another PDF invoice generator
  • npm-available-array—Having an array of package names, check which ones are available on npm.
  • package-dependents—Get the npm dependents of a given package.
  • read-dir-and-stat—Reads the directory files and adds the stat info.
  • same-time-limit—Run tasks in parallel with a limit.
  •—A site to provide an easy way to show licenses and their human-readable explanations.

:scroll: License

MIT © Ionică Bizău