2013-03-26 42 views
3

docs for Dojo's AMD loader提到跟蹤API。有沒有例子說明這是如何實現的?使用Dojo的require.trace跟蹤整體加載進度

我想利用它來顯示一個「Loaded X of X」風格的消息,而我的應用程序的各種依賴被加載,但我不知道如何這樣做或在我的代碼流中包含跟蹤。

編輯:似乎跟蹤API只在源版本的Dojo上可用。有什麼不同的方式來實現我想要的?

回答

1

此代碼似乎工作,但它太脆弱了。它依賴於1)要求在源版本的Dojo中暴露它的內部工作,以及2)將來可能會改變的需求屬性。當然有更好的辦法!

require([], function() 
{ 
    // output amd progress 
    var loadWatchHandle = setInterval(function() 
    { 
     var all = Object.keys(require.modules).length, 
      waiting = 0; 

     for(dep in require.waiting) 
     { 
      if(require.waiting[ dep ] !== 1) 
      { 
       waiting++; 
      } 
     } 

     // write progress 
     console.log((all - waiting) + '/' + all + ' files (' + parseInt((all - waiting)/all * 100) + '%)'); 
    }, 50); 

    require([ 'dojo/parser', 
     'dojo/ready', 
     'dijit/layout/BorderContainer', 
     'squad_builder/TabContainer', 
     'dijit/layout/ContentPane', 
     'dojo/domReady!' ], 
    function(parser, ready) 
    { 
     parser.parse(); 

     ready(function() // uses ready not domReady because we want initial djits to be parsed 
     { 
      // stop tracing 
      clearInterval(loadWatchHandle); 

      // bootstrap here... 

     }); 
    }); 
});