ごきげんよう。私です。
今日はJavaScriptを使っていて困った話。
QRコードを表示させるコードを書いたのです。
そのQRコードを画像として保存しようと思ったのです。600個ほど(ぉ
なので自動的にCanvasをpngにして保存しようと考えていました。
自動保存まではできたのです。
ですが、困った問題が起きたのです。
JavaScriptのコールバック関数に引数を渡すメソッド
QRコードの名前と内容の文字列を一致させて保存しようとしたのですが、
canvas.toBlob()のコールバック関数に名前を上手く渡せないっ><
引数がblobだけなのですね、コレ。
こうなったら……っ!
強引にGlobal変数で無理やりどうっ!?
…………あぅ。
JavaScriptのあるあるですが、関数は順番に0,1,2...と実行されるわけではないので名前と内容がずれて涙目……。
そこで四苦八苦して思い立ったのがクロージャでした。
JavaScriptでCallBackに引数を渡す
//Canvasをpngにして自動で保存(var sの中身はファイル名の配列)
(function(fileName){
canvas.toBlob(function(blob) { saveAs(blob, fileName + ".png");}, "image/png");
})(s[i]);
はいw
これで無事、外から引数をわたしてあげることができました!