Last active
April 7, 2016 12:02
-
-
Save vladyslav2/6c2f0c3edbdbebb9d1630bf43a697a1d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"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