<わからないこと>
Raspberry PiでWebプログラムを作成しようとしています。
とあるサンプルコードにある
JavaScript
1webiopi().ready( my_init );
がどのように動作するのかわかりません。
<コード>
webiopi.jsのコードの関係あると思う部分のみ下記に抜粋します。
JavaScript
1var _webiopi; 2 3function w() { 4 if (_webiopi == undefined) { 5 _webiopi = new WebIOPi(); 6 } 7 8 return _webiopi; 9} 10 11function webiopi() { 12 return w(); 13} 14 15function WebIOPi() { 16 this.readyCallback = null; 17 (中略) 18 19 var jquery = document.createElement('script'); 20 jquery.type = 'text/javascript'; 21 jquery.src = '/jquery.js'; 22 23 jquery.onload = function() { 24 w().init(); 25 }; 26 (中略) 27} 28 29WebIOPi.prototype.init = function() { 30 (中略) 31 if (w().readyCallback != null) { 32 w().readyCallback(); 33 } 34 }); 35} 36WebIOPi.prototype.ready = function (cb) { 37 w().readyCallback = cb; 38}
<私が考えている期待する動作>
webiopi().ready( my_init );
は、何らかの準備ができたらmy_initを呼ぶよう要求するものだと思います。
<私が考えている上記コードの挙動>
webiopi.jsを見ると、readyCallbackが呼ばれるのはinitのみからで、
initが呼ばれるのはWebIOPi()のみからで、
WebIOPi()が呼ばれるのは最初にwebiopi()が呼ばれたときのみだと思います。
webiopi().ready( my_init );
を実行すると、
webiopi()
の時点でnullのreadyCallbackが呼ばれてしまい、その後
.ready( my_init )
でreadyCallbackをセットした後にreadyCallbackが呼ばれることは
無いように思います。
私の考えている挙動に誤りがあるでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/22 09:53
2018/01/22 10:05
2018/01/23 00:11