タグ

ブックマーク / blog.sasaplus1.com (3)

  • coとthunkifyとgenerator

    をしておく。 それと、generatorを使うので実行する際はnode.js ver.0.11を使い、オプションに--harmonyもしくは--harmony-generatorを指定する。 var co = require('co'); function wait() { return new Promise(function(resolve, reject) { setTimeout(resolve, 1000); }); } co(function* () { console.log('Hello'); yield wait(); console.log('World!'); }).catch(function(err) { throw err; }); Promiseを返す関数をcoに渡したgenerator内でyieldを使って同期的に書いている。エラーのハンドリングはcoが返す

  • ['1', '2', '3'].map(parseInt) => [1, NaN, NaN]の謎

    今まで['1', '2', '3'].map(parseInt)が意図した結果にならない([1, 2, 3]にならない)のは知っていたのだけど、理由がよくわからなかったので調べてみた。 JavaScriptのparseIntとmapを組み合わせる際の注意より: mapに渡した関数には、引数としてvalue, index, selfが渡される。 を見てわかった。parseIntの基数にindexの値が渡されてるのかーと。 parseInt('1', 0); // => 1 parseInt('2', 1); // => NaN parseInt('3', 2); // => NaN ということみたい。 parseFloatの場合は基数とかないので[1, 2, 3]が返ってくる。整数が欲しい場合は向かないけど…… lodashを使っている場合は_.parseIntを使えば基数を省略した場合は1

  • debugモジュールを使う

    node.jsでデバッグコードを書くときはdebugをよく使っている。 一方で、ブラウザ向けのコードを書くときは普通にconsole.logを使っていて当然ながら常に出力されてしまうのだけど、 node.jsのように簡単に出力を切り替えたいと思いブラウザ版のdebugを使ってみた。 まずライブラリのダウンロードをする。 $ curl -O https://raw.githubusercontent.com/visionmedia/debug/master/dist/debug.js <!DOCTYPE html> <meta charset="utf-8"> <title>debug</title> <script src="debug.js"></script> <script> var log = debug('main'); log('hello!'); </script>

  • 1