You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

paranymph-sync

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

paranymph-sync

JavaScript μ function to execute functions synchronously and return result when all callbacks are done

1.0.0
latest
Source
npmnpm
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

paranymph-sync

Function

    const paranymphSync = (list, callback) => {
        (function loop(list, callback, i, result) {
            list[i]((err, data) => {
                return list[++i] && !err ? loop(list, callback, i, data) : callback(err, data)
            }, result)
        })(list, callback, 0)
    }

Minification

const paranymphSync = (l,c) => (function $(l,c,i,r){l[i]((e,d)=>l[++i]&&!e?$(l,c,i,d):c(e,d),r)})(l,c,0)

Speed test paranymphSync vs async.waterfall in node.js

Requesting findOne to MongoDB

alt tag

setTimeout test synchronously

paranymphSync([
	callback => setTimeout(() => callback(null, 1), 500),
	(callback, result) => setTimeout(() => callback(500, 'Some error'), 200),
	(callback, result) => setTimeout(() => callback(null, result*2), 50)
], (err, data) => console.log('Callback with error: => ', err, data))

result

Callback with error: => 500 Some error

paranymphSync([
	callback => setTimeout(() => callback(null, 1), 500),
	(callback, result) => setTimeout(() => callback(null, result*2), 200),
	(callback, result) => setTimeout(() => callback(null, result*2), 50)
], (err, data) => console.log('Callback without error: => ', err, data))

result

Callback without error: => null 4

XMLHttpRequest test synchronously

paranymphSync([
    (callback) => {
        //Get time
        const req = new XMLHttpRequest()
        req.onload = () => callback(null, JSON.parse(req.responseText))
        req.onerror = () => callback(true, req.status)
        req.ontimeout = () => callback(true, req.status)
        req.open('GET', 'http://time.jsontest.com/')  
        req.send()
    },
    (callback, result) => {
        //Hash time
        const req = new XMLHttpRequest()
        req.onload = () => callback(null, JSON.parse(req.responseText))
        req.onerror = () => callback(true, req.status)
        req.ontimeout = () => callback(true, req.status)
        req.open('GET', 'http://md5.jsontest.com/?text='+result.time)  
        req.send()
    },
    (callback, result) => {
        //Create value
        const req = new XMLHttpRequest()
        req.onload = () => callback(null, JSON.parse(req.responseText))
        req.onerror = () => callback(true, req.status)
        req.ontimeout = () => callback(true, req.status)
        req.open('GET', ' http://echo.jsontest.com/hashtime/'+result.md5)  
        req.send()
    }
], (err, data) => console.log(err, data))

result

null Object {hashtime: "e75923f1ef2977abf5ebc988a40a188b"}

browser result

alt tag

Keywords

sync

FAQs

Package last updated on 26 Aug 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts