24. yieldによる関数実行の中断
var calc = function(a, b)
{
return new Promise(function(resolve) {
setTimeout(function() {
resolve(a + b);
}, 1000);
});
}
var co = require('co');
co(function *(){
var a = yield calc(1, 2);
console.log(a);
});
25. Call Back Hell, then Chainいらない
var co = require('co');
co(function *(){
var a = yield calc(1, 2);
console.log(a);
var b = yield calc(10, 20);
console.log(b);
var c = yield calc(100, 200);
console.log(c);
});
26. 並列実行も簡単
var co = require('co');
co(function *(){
var results = yield [
calc(1, 2),
calc(10, 20),
calc(100, 200),
];
console.log(results);
});
28. 大本命『Async, Await』
ES7でやってくる
var run = async function(){
var result = await calc(1, 2);
console.log(result);
var result = await calc(10, 20);
console.log(result);
var result = await calc(100, 200);
console.log(result);
};
run();
66. 辛い話
• 他の言語も書いてみたい(Golang, Elixir, Rubyとかね)
• Class構文でPropertyを扱いづらい
class Sample
{
name: 'sample';
sayName()
{
console.log('my name is %s', this.name);
}
}
// my name is undefined
new Sample().sayName();