Created
July 1, 2015 07:03
-
-
Save tlhunter/6937e23b8eaa3a6e1a2d to your computer and use it in GitHub Desktop.
This file contains 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
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 | |
}; | |
} |
This file contains 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
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); | |
} |
This file contains 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
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); | |
}); | |
} |
This file contains 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
/* 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); | |
}); | |
} |
This file contains 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
/* 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); | |
}); | |
} |
This file contains 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'; | |
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); | |
}); | |
} | |
This file contains 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
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