npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

sync-node

v1.3.1

Published

This node module will help you to make your task synchronous without blocking the main JavaScript thread

Downloads

97

Readme

sync-node

This tiny node module will help you to make your tasks synchronous without blocking the main JavaScript thread.

$ npm install sync-node

The problem

JavaScript is single threaded; thus forces you to write asynchronous code. But there are scenarios where we may want some functions or tasks to run one after another. Promises are one of the best things to be used in these scenarios, but if you have a number of tasks like that, well putting .then() one after another will certainly make an ugly looking code.

In the other hand, there are libraries which makes things purely synchronous. But the problem with that is, JavaScript has only one thread, blocking which will paralyse your application for a while.

The solution

This plugin works with a middle way, where it doesn't block anything, but still makes things synchronous.

The concept here is to provide you with a job queue, where you can push your functions one after another and they will be executed in the sequence they pushed. If a function is asynchronous, the next one of that will not be run till it gets resolved.

Example

	var SN = require('sync-node');
	var pn = SN.createQueue();
	pn.pushJob(function(){
		return new Promise(function (resolve, reject) {
			//I am using setTimeout to make the function async
			setTimeout(function() {
				console.log("I am supposed to be first!!");
				resolve("fox");
			}, 5000);
	
		})
	});
	pn.pushJob(function(res){
	        console.log("I should come second!! Previous response was "+res);
	});
	
	pn.pushJob(function(){
		return new Promise(function (resolve, reject) {
			setTimeout(function() {
				console.log("Yes, I am third!!");
				resolve();
			}, 1000);
	
		})
	});
	
	
	pn.pushJob(function(){
	        console.log("Oh no.. I'm last!!");
	});

Note

If you have any asynchronous function, than it must return a promise, else the queue will not come to know when the actual execution of that function is finished. A better tutorial can be found in Void Canvas.