Skip to content

Instantly share code, notes, and snippets.

@tlhunter
Created July 1, 2015 07:03
Show Gist options
  • Save tlhunter/6937e23b8eaa3a6e1a2d to your computer and use it in GitHub Desktop.
Save tlhunter/6937e23b8eaa3a6e1a2d to your computer and use it in GitHub Desktop.
var level_result = createLevel(12, {data: true});
console.log(level_result);
function createLevel(user_id, level_data) {
var user = getUser(user_id);
var can_create = canCreate(user);
if (!can_create) {
return null;
}
var level = saveLevel(user, level_data);
return level;
}
function getUser(user_id) {
return {
id: user_id,
nickname: 'tlhunter'
};
}
function canCreate(user) {
return user.id === 12;
}
function saveLevel(user, data) {
return {
id: 100,
owner: user.nickname,
data: data
};
}
createLevel(12, {data: true}, function(level_result) {
console.log(level_result);
});
function createLevel(user_id, level_data, cb) {
getUser(user_id, function(user) {
canCreate(user, function(can_create) {
if (!can_create) {
return cb(null);
}
saveLevel(user, level_data, function(level) {
cb(level);
});
});
});
}
function getUser(user_id, cb) {
setTimeout(function() {
cb({
id: user_id,
nickname: 'tlhunter'
});
}, 100);
}
function canCreate(user, cb) {
setTimeout(function() {
cb(user.id === 12);
}, 100);
}
function saveLevel(user, data, cb) {
setTimeout(function() {
cb({
id: 100,
owner: user.nickname,
data: data
});
}, 100);
}
createLevel(12, {data: true}).then(function(level_result) {
console.log(level_result);
});
function createLevel(user_id, level_data, cb) {
var user = null;
return getUser(user_id).then(function(_user) {
user = _user;
return canCreate(_user);
}).then(function(can_create) {
if (!can_create) {
return null;
}
return saveLevel(user, level_data);
});
}
function getUser(user_id) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve({
id: user_id,
nickname: 'tlhunter'
});
}, 100);
});
}
function canCreate(user) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve(user.id === 12);
}, 100);
});
}
function saveLevel(user, data) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve({
id: 100,
owner: user.nickname,
data: data
});
}, 100);
});
}
/* jshint esnext: true */
var co = require('co');
createLevel(12, {data: true}).then(function(level_data) {
console.log(level_data);
});
function createLevel(user_id, level_data) {
return co(function * createLevel() {
var user = yield getUser(user_id);
var can_create = yield canCreate(user);
if (!can_create) {
return null;
}
var level = yield saveLevel(user, level_data);
return level;
});
}
function getUser(user_id) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve({
id: user_id,
nickname: 'tlhunter'
});
}, 100);
});
}
function canCreate(user) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve(user.id === 12);
}, 100);
});
}
function saveLevel(user, data) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve({
id: 100,
owner: user.nickname,
data: data
});
}, 100);
});
}
/* jshint esnext: true */
var generator = createLevel(12, {data: true});
generator.next().value.then(function(user) {
return generator.next(user).value.then(function(can_create) {
return generator.next(can_create).value.then(function(level_result) {
console.log(level_result);
});
});
});
function * createLevel(user_id, level_data) {
var user = yield getUser(user_id);
var can_create = yield canCreate(user);
if (!can_create) {
return null;
}
var level = yield saveLevel(user, level_data);
return level;
}
function getUser(user_id) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve({
id: user_id,
nickname: 'tlhunter'
});
}, 100);
});
}
function canCreate(user) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve(user.id === 12);
}, 100);
});
}
function saveLevel(user, data) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve({
id: 100,
owner: user.nickname,
data: data
});
}, 100);
});
}
'use strict';
var _regeneratorRuntime = require('babel-runtime/regenerator')['default'];
var _Promise = require('babel-runtime/core-js/promise')['default'];
createLevel(12, { data: true }).then(function (level_data) {
console.log(level_data);
});
function createLevel(user_id, level_data) {
var user, can_create, level;
return _regeneratorRuntime.async(function createLevel$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
context$1$0.next = 2;
return _regeneratorRuntime.awrap(getUser(user_id));
case 2:
user = context$1$0.sent;
context$1$0.next = 5;
return _regeneratorRuntime.awrap(canCreate(user));
case 5:
can_create = context$1$0.sent;
if (can_create) {
context$1$0.next = 8;
break;
}
return context$1$0.abrupt('return', null);
case 8:
context$1$0.next = 10;
return _regeneratorRuntime.awrap(saveLevel(user, level_data));
case 10:
level = context$1$0.sent;
return context$1$0.abrupt('return', level);
case 12:
case 'end':
return context$1$0.stop();
}
}, null, this);
}
function getUser(user_id) {
return new _Promise(function (resolve) {
setTimeout(function () {
resolve({
id: user_id,
nickname: 'tlhunter'
});
}, 100);
});
}
function canCreate(user) {
return new _Promise(function (resolve) {
setTimeout(function () {
resolve(user.id === 12);
}, 100);
});
}
function saveLevel(user, data) {
return new _Promise(function (resolve) {
setTimeout(function () {
resolve({
id: 100,
owner: user.nickname,
data: data
});
}, 100);
});
}
createLevel(12, {data: true}).then(function(level_data) {
console.log(level_data);
});
async function createLevel(user_id, level_data) {
var user = await getUser(user_id);
var can_create = await canCreate(user);
if (!can_create) {
return null;
}
var level = await saveLevel(user, level_data);
return level;
}
function getUser(user_id) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve({
id: user_id,
nickname: 'tlhunter'
});
}, 100);
});
}
function canCreate(user) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve(user.id === 12);
}, 100);
});
}
function saveLevel(user, data) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve({
id: 100,
owner: user.nickname,
data: data
});
}, 100);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment