1

私は他の開発者にインフラストラクチャーを提供しており、そのために Dojo を使用しています。

私のInit関数では、すべてのモジュールがロードされたときのコールバック関数である「require」メソッド(もちろん)を使用しています。

問題は、クライアントがコールバックを使用したくないことです。彼は私に電話して、(私の Init メソッドを同期させるために) 私を使用するために電話をかけ、モジュールのロードが確実に完了した後にコードを返したいと考えています。

マイコード

<script src=..../dojo.js></script>

function Init()
{
   var loaded = false;

   require(["...myFiles..."], 
      function()
      {
          loaded = true;
      });

   // Whatever to do here or some other way to hold till the require operation finished
   while (!loaded) // :)
}

私のクライアント側

  Init();
  myFiles.DoSomething();

それは可能ですか?同期を必要とするか、それが終了するまで待機する何かを行うには? require メソッドが終了したときにのみ init メソッドから戻るには?

4

2 に答える 2

0

イニシャライザを「my/Files」などのモジュールにし、init および doSomething 関数をそのモジュールの静的メソッドにします。

「my/Files.js」で

define([
    "dojo/_base/declare", 
    ...<your other required dependencies>
], function(declare){

    var myFiles = declare(null, {});

    myFiles.init = function(){
        // Your initialization code
    }

    myFiles.doSomething = function(){ ... }

    return myFiles;
});

あなたのhtmlで:

<script type="dojo/require">
    myFiles : "my/Files"
</script>

次に、次のようにJavaScriptで使用できます。

myFiles.init();
myFiles.doSomething();
于 2013-07-01T20:41:29.223 に答える