Skip to content

Instantly share code, notes, and snippets.

@A
Last active August 29, 2015 14:08
Show Gist options
  • Save A/77e7e0f6cd4f0e5129c5 to your computer and use it in GitHub Desktop.
Save A/77e7e0f6cd4f0e5129c5 to your computer and use it in GitHub Desktop.
// WTF
// Если в скопе вызывается один метод, exec() будет вызван автоматически:
db.find(1); // залогирует 1
// Если же в скопе происходит цепочка вызовов, то exec() нужно будет вызывать вручную:
db
.find(1)
.find(2)
.find(3)
.exec() // Залогирует 123
// или даже так:
db.find(1);
db.find(2);
db.find(3);
db.exec(); // Залогирует 123
// Такой интерфейс выглядит очень непрозрачно для пользователя, но, возможно,
// в каких-то ситуациях эта идея может оказаться полезной :D
// Исходники:
var db = {query: ''};
db.exec = function () {
console.log(db.query);
db.query = '';
db.timer = 0;
};
db.find = function (query) {
db.query += query;
return db.defer();
};
// majic
db.defer = function () {
if (false === db.timer) { return db; }
db.timer = !db.timer
? setTimeout(db.exec, 0)
: (clearTimeout(db.timer), false);
return db;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment