## Asynchronous programming in JavaScript as of today (_continuation of the [main topic](https://github.com/SKindij/Asynchronous-JS-Nodejs)_)
**contracts:** ``(...args, callback) => callback(err, data);``
You can find code examples in the files mentioned below.
### file timers.js
> If we want to make a certain time delay.
> inside the function ``delay()`` we use...
> > - while() / new Date().getTime()
> > - async () / await / new Promise() / setTimeout()
> > - new Promise() / setTimeout() / .then()
- - -
### file callbacks.js
> Here we specify the emulation of asynchronous calls:
> > - reading of configuration;
> > - executing SQL query;
> > - making GET request;
> > - reading a file;
- - -
### file workSampleCallback.js
***A callback is a function that must be executed after another function has completed its work.***
> Imagine that a complex task has to be performed at the enterprise.
> > We will use ``function doСomplexWork(firstTask, secondTask, callback)`` that accepts three arguments.
> > We will also have two functions ``doTesting()`` and ``doPacking()``, that we'll alternate between using as callbacks.
### file workSamplePromise.js
***The Promise() constructor takes a function as an argument.***
> Promises are useful when you have to handle more than one asynchronous task, one after another.
> > Here we will also use a function ``doСomplexWork()`` with three arguments.
> > And here ``.then()`` will come in handy.
- - -