2012-09-29 9 views

答えて

1

あなたはリソースが正常にロードされた時にトリガーされます.require()に必要なモジュール、一緒コールバック方法を渡す必要があります。だからもちろん、そのコールバックの中でロードされたAMDまたはCommonJSモジュールにのみアクセスするべきです。 NodeJSため

はい、.require()は同期動作しません。 NodeJSは、AMDではなく、CommonJSモジュールシステムを使用します。

2

ここには2つの異なるsynchronous概念があります。 最初は "私のウェブページ全体を止め、ファイルを待っていますか?"

答えはいいえです。依存関係を持つスクリプトがある場合、RequireJSはそれを行いません。

適切に使用すると、約束システムが使用されます。 つまり、コールバックを送信してそのファイルの要件を定義すると、必要なファイルがすべてロードされるまでコールバックは実行されません。

これらの必要なファイルの1つが必要な場合は、THAT ITS依存関係がロードされるまでコールバックは実行されません。

最も外側のコールバック(通常はスクリプトの最下部にあるコールバック)は、内部にあるすべてのコールバックが実行されるまで実行されません。

これはpromiseシステムで動作します。 有望なシステムがどのように機能するかを理解することは価値があります(ある意味ではオブザーバーパターンに似ています)。 複数の人が何らかの順序でリスンするのではなく、イベントに基づいて回るか連鎖することを意図しています。

var widget = new Widget(), 
    widgetLoaded = widget.load(url); // return a promise to let the program use the widget 

widgetLoaded.then(function() { widget.move(35); }) 
      .then(function() { widget.setColour("Blue"); }) 
      .then(function() { widget.show(); }); 

これは、呼び出しが実際にwidget.load()が完了するまで発生しないことを除いて、thisあなたがチェーンの関数呼び出しをすることができるように返すようなものです。

widgetは実際にこのような状況が発生したときに、ウィジェットが読み込まれてすべて正常であればその約束を維持するか、何か問題が生じた場合にその約束を破ることによって制御します。

ほとんどの約束システムで

.thenまたは何でも、彼らはそれを呼び出す、いずれか二つの機能とり(維持し、壊れた - 私のシステムでは、brokensは常にオプションである)、またはそれらをsuccessを持つオブジェクトを取得し、failureから$.ajaxがこれを行いますデータがロードされたときに何をしたいのか、失敗するのかを事前に決めることができます。

あなたのページは100%非同期で(UIを中断することなく)動作しますが、すべてのモジュールが正しい順序で起動するという点で100%同期しています。あなたのコードでこれらの依存関係を持っている場合、あなたは、インラインで実行するのを待って、スクリプトの一番下に転がって任意の依存関係を持つことはできません :あなた

ことの一つは、を覚えておく必要があります。 これらはすべてコールバック内でロックされるか、コールバックによって呼び出されるのを待っている関数内でロックされている必要があります。

それが実際の処理の点で非同期プロセスであり、そしてエトセトラ、ページのレンダリング、イベント/ JSを実行し、ブラウザをブロックしないので、これは単純です。

関連する問題