2012-01-17 25 views
5

イベントハンドラでのみ受け取る値を返すために、最初にイベントを開始する関数にイベントハンドラによって返される値を持つ必要があります。私はこれを達成するか、または異なる角度から問題を攻撃する簡単な方法があるべきだと考えています。イベントハンドラから親関数への戻り値javacriptから

私が実際に行う必要があることである:

  1. は(dataURLがcanvas.toDataURLから来ている())
  2. img.onloadができるようになるにdataURLを養うために新しいIMGのDOMオブジェクトを作成します。私はdataURLを返します

私は何とか役立つが、もちろん必要はない場合はjQueryを使用しています。

私の理解では、データを即座に持っているimgに頼ることはできませんし、いくつかのグローバル変数を使用するイベントを待つためにタイムアウトを使用するのは馬鹿げています。 。

さらに多くの背景のために、これはHTML5エンジンで画像を(マルチ)アップロードする前に画像のサイズを変更するためのものです。でも読書のための、そしてもちろんの任意のヒントについて

感謝:)

おかげで、 イゴール

+0

何もイベントハンドラを書いておらず、「親」関数の値が必要であることを認識しました。私はタイムアウトでループすることができると分かっていますが、直感ではよりスマートなものが必要だと私に伝えています:) –

+1

約束しているライブラリは価値があるかもしれません:https://github.com/kriskowal/q – thetallweeks

+1

これは非常に古いものですが、この質問につまずいた人には有益なコメントです。 私は最近、約束のためにブルーバードを使用しています。 質問を見直して、私は多くの進歩が実現したことを実感しました。金曜日のリフレッシュのために@thetallweeksに感謝します)) –

答えて

3

これは、イベントハンドラからの戻り値に意味がありません。イベントは発生時に発生し、ハンドラはその時点でブラウザによって呼び出されます。したがって、戻り値を期待するコードはありません。それはどこにも行かない。

イベントハンドラ内で行う必要があることは何でも実行してください。

+0

イベントを発生させたオブジェクトを構築した関数(F)から値を戻す必要があります最初にFを呼び出した変数。申し訳ありませんが混乱している場合: –

+0

私はあなたが言っていることを知っていますが、それを行うことはできません。 WebブラウザのJavaScriptは非同期環境です。何かが起こるのを待つ関数を作ることはできません。したがって、コードを構造化する方法は、非同期性を取り入れ、戻り値を期待する関数を書く代わりに、 "onload"ハンドラによって呼び出される独自のハンドラ関数を*渡すようにすることです画像の – Pointy

+1

私はそこに着いていると思います... imgがロードされたときに別のハンドラを元のハンドラに渡して実行する必要があります... –