1

JavaScript オブジェクトに一連の関数があります。ここにそれらの1つがあります:

addImage: function(evt) {
        var file = evt.target.files[0];
        /* Only process image files.*/
        if(file.type.match('image.*')) {
            /*Add image to FileReader object*/
            var reader = new FileReader();
            reader.readAsDataURL(file);
            /*Add image to local storage */
            reader.onload = (function(theFile) {
                return function(e) {
                    localStorage.setItem(underlayer.url, e.target.result);
                    //add image
                    underlayer.setImage();
                    underlayer.setPosition();
                    setTimeout(underlayer.setHeight(), 5000);

                };
            })(file);
        }
    },

ローカルストレージにロードされた画像の高さを読み取り、数ミリ秒かかるため、必要な遅延の後に underlayer.setHeight() をトリガーしたい.ただし、underlayer.setHeight は、遅れ。

4

2 に答える 2

8

()の後に置くことでsetHeight、関数を呼び出し、その戻り値を に渡しますsetTimeout。これは明らかにあなたがやろうとしていることではありません。

を削除する()と、正常に動作するはずです。

編集:コンテキストを忘れました。setTimeout(function() {underlayer.setHeight();},5000);おそらくあなたの最善の策です。

于 2013-06-25T13:09:30.120 に答える
1

コードを変更する必要がありますsetTimeout

setTimeout(function(){underlayer.setHeight()},5000);
于 2013-06-25T13:10:54.953 に答える