func(opts, cb)のoptsを省略したい
2014年10月4日
JavaScript で
var foo = function(arg1, arg2, options, callback){};
という関数を
foo(arg1, arg2, callback);
こういう風に options を省略して呼べるようにしたいことが多々有ります。
この問題の解決に際して、
if (typeof options === 'function') { callback = options; options = {}; }
という感じに都度書いてもいいのですが、面倒だしテストも大変になるので、ちょっと便利になるものを作ってみました。
callback-end モジュール
– GitHub
– npm
– npm
var callbackEnd = require('callback-end'); var func = function(foo, bar, cb){ return Array.prototype.slice.apply(arguments); }; var wrapped = callbackEnd(func); console.log( wrapped(1, 2, function(){}) // -> [1, 2, function(){}] ); // 引数を省略すると、コールバックを除いた後ろの引数は省略扱いになる // bar を省略して呼び出ししています // 省略された引数には undefined が入る console.log( wrapped(1, function(){}) // -> [1, undefined, function(){}] ); // foo と bar 両方省略して呼び出し console.log( wrapped(function(){}) // -> [undefined, undefined, function(){}] );