Skip to content

Instantly share code, notes, and snippets.

@vladyslav2
Last active April 7, 2016 12:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vladyslav2/6c2f0c3edbdbebb9d1630bf43a697a1d to your computer and use it in GitHub Desktop.
Save vladyslav2/6c2f0c3edbdbebb9d1630bf43a697a1d to your computer and use it in GitHub Desktop.
"use strict";
const inherits = require('util').inherits,
db = require('db'),
q = require("q");
function Jobs()
{
// Пример с callbackом и типа без лапши
this.userExist = function (userId, callbacks) {
var callback = callbacks.splice(0, 1)
if(err) {
job.emit('error', err)
return 0
}
db.query("select * from user where user_id = %d", [userId], (err, userData) =>
if(err) {
job.emit('error', err)
return 0
}
// Идем дальше только если пользователь есть в базе
if(userData !== null) {
callback(userData)
}
);
}
// Пример с событием которое мы ловим если находим заказ
this.getOrders(userData, callbacks) {
var callback = callbacks.splice(0, 1)
db.query("select * from orders where user_id = %d", [userData.id], (err, cursor) =>
if(err) {
job.emit('error', err);
return 0
}
// Курсор это указатель но список заказов, что бы получить каждые заказ
// мы должны пройтись по нему
cursor.each((err, order) =>
if(order) {
callback(order, callbacks)
} else { // указыает что заказов в списке больше нет
console.log('no more orders')
}
)
}
this.addComment(order, callbacks) {
db.query("insert into comments values(%d, %d)", [order.id, order.user_id], (err, comment) =>
if(err) {
job.emit('error', err);
return 0;
}
)
}
this.doSomething = function (userId, cb)
{
callbackChains = [this.getOrders, this.addComment]
this.userExist(userId, callbackChains);
}
}
inherits(Jobs, require('events').EventEmitter);
module.exports = new Jobs();
/* ......................*/
var job = Job();
job.on("error", function(err) {
console.error(err.message);
})
job.doSomething()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment