A
A
Andrey Popov2015-06-11 12:19:14
Node.js
Andrey Popov, 2015-06-11 12:19:14

Do I understand NodeJS async execution order correctly?

Let's say we have a code:

console.log('start');

async.parallel([
    function () {
        App.loadSettings();
    },
    function () {
        App.loadData();
    },
    function () {
        App.loadData2();
    },
]);

console.log('end');

console log('end'); - Will be called last always? Or not a fact? I tried to make delays in parallel functions through sleep - it has always been that way.

Answer the question

In order to leave comments, you need to log in

2 answer(s)
Тимур Шемсединов, 2015-06-11
@Nord001

Не правильно понимаете. Если функции loadSettings и другие асинхронные, а они конечно асинхронные по своему смыслу, ведь это внешние запросы из базы или с веника, то писать нужно примерно так:

async.parallel([
    function (callback) {
        App.loadSettings(callback);
    },
    function (callback) {
        App.loadData(callback);
    },
    function(callback) {
        App.loadData2(callback);
    },
]);

И когда они завершаются, они должны уведомлять async вызовом этого самого callback

A
Alexander Prozorov, 2015-06-13
@Staltec

Your code should look like this:

console.log('start');

async.parallel([
    function (callback) {
        App.loadSettings(callback);
    },
    function (callback) {
        App.loadData(callback);
    },
    function(callback) {
        App.loadData2(callback);
    }
], function(err, results) {
    console.log('end', err ? err : results);
});

Or like this:
console.log('start');

async.parallel([
    async.apply(App.loadSettings),
    async.apply(App.loadData),
    async.apply(App.loadData2)
], function(err, results) {
    console.log('end', err ? err : results);
});

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question