私は画像の幅を取得しようとしていますが、それは常に未定義です。ここで)コードjavascript変数は期待通りに動作しません
var w;
var _URL = window.URL || window.webkitURL;
var img = new Image();
img.src = _URL.createObjectURL(files[i]);
img.onload = function () {
w = this.width;
console.log(w); // works
};
console.log(w); // undefined
の一部であると私は(関数内のコンソールではない最初に呼ばれている最後のコンソールログに気づく、そして、それが正しい動作ですか?私はそれが関数を1行ずつ呼び出すと思っていたからです。
私が4つのファイルを入力した場合、結果は最初に4 undefined
になり、実際の画像の幅になります。
onloadは非同期に呼び出されます。画像がロードされると、それが発生するまで未定義になります。オンロード関数外のコードは画像がロードされるのを待ちません。 –
@JaromandaXどうすればこの値を取得できますか.widthとonloadの外でそれを使用してください – markoverflow
簡単な答えは、あなたは、複雑な答え、どのコールバックや約束を使用して非同期コードを使用する方法を学ぶことはできません –