Показать сообщение отдельно
  #14 (permalink)  
Старый 13.05.2014, 01:40
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от dmitry111
var config = require('../config');

var maxPlayers = config.get('game:maxPlayers');

// проверяет наличие свободные мест
// true: отсутствие мест
exports.check = function (users, cb) {
   var result

  // тут какие-то расчеты

  process.nextTick(function () {
    cb(result);
  });
};
А зачем колбек просто так асинхронным делать? Вместе с расчетами логично асинхронно запускать.
Так или иначе, скоро в Nodejs будут доступны встроенные ES6 Promises, думаю, это повлияет на API большинства новых модулей, а может быть и самого Nodejs, я бы уже начал писать асинхронные скрипты в таком стиле:
// проверяет наличие свободные мест
exports.check = function (users) {
    return new Promise(function (resolve, reject) {
        setImmediate(function () {
            try {                
                var value;
                // тут какие-то расчеты
                resolve(value);
            } catch (reason) {
                reject(reason);
            }
        });
    });
};

var waiting = require('../lib/waiting');

var allUsers = 10;

waiting.check(allUsers).then(function (value) {
    if (value) {
        //есть свободные места
    } else {
        //нет свободных мест
    }
}, function (reason) {
    //произошла ошибка
});

Последний раз редактировалось Octane, 13.05.2014 в 02:15.
Ответить с цитированием