@se-oss/deasync
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

@se-oss/deasync

CI NPM Version MIT License Install Size

@se-oss/deasync is a Node.js addon that enables synchronous execution of asynchronous functions by blocking the event loop. The core of project is written in Rust for performance and reliability.


📦 Installation

npm install @se-oss/deasync

📖 Usage

Wrapping an Asynchronous Function

deasync converts an asynchronous function with the conventional callback pattern function(p1, ...pn, callback(error, result)) into a synchronous function. It returns the result and throws an error if one occurs.

import { deasync } from '@se-oss/deasync';

function asyncFunction(input: string, callback: (err: any, result: string) => void) {
  setTimeout(() => {
    callback(null, `Hello, ${input}!`);
  }, 1000);
}

const syncFunction = deasync(asyncFunction);
console.log(syncFunction("World")); // Blocks for 1 second, then prints "Hello, World!"

Blocking Execution with loopWhile

Use loopWhile(predicateFunc) to block execution while the given predicate function returns true.

import { sleep } from '@se-oss/deasync';
let done = false;

setTimeout(() => {
  done = true;
}, 1000);

loopWhile(() => !done);

// The task is now complete

Sleeping for a Fixed Duration

The sleep function blocks the current thread for the specified number of milliseconds. It behaves similarly to the Atomic.wait() API.

import { sleep } from '@se-oss/deasync';

console.log(Date.now(), 'Hello');
sleep(1000);
console.log(Date.now(), 'World!');

📚 Documentation

For all configuration options, please see the API docs.

🤝 Contributing

Want to contribute? Awesome! To show your support is to star the project, or to raise issues on GitHub

Thanks again for your support, it is much appreciated! 🙏

🙌 Credits

This project is inspired by deasync, originally created by Vladimir Kurchatkin and later maintained by @abbr.

License

MIT © Shahrad Elahi and contributors.

Package Sidebar

Install

npm i @se-oss/deasync

Weekly Downloads

12

Version

1.0.1

License

MIT

Unpacked Size

21.7 kB

Total Files

7

Last publish

Collaborators

  • shahradelahi