Native Node.js addon for synchronous async calls.
npm install @se-oss/deasync



_@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
- Usage
- Documentation
- Contributing
- Credits
- License
``bash`
npm install @se-oss/deasync
#### 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.
`typescript
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.
`typescript
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.
`typescript
import { sleep } from '@se-oss/deasync';
console.log(Date.now(), 'Hello');
sleep(1000);
console.log(Date.now(), 'World!');
``
For all configuration options, please see the API docs.
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! 🙏
This project is inspired by deasync, originally created by Vladimir Kurchatkin and later maintained by @abbr.
MIT © Shahrad Elahi and contributors.