【dojo】dojo.ready(dojo.addOnLoad) "전문"
Dojo 1.6 이전(1.6 포함)에는 좀 번거로웠다.소스 코드:
dojo.ready = dojo.addOnLoad = function(/*Object*/obj, /*String|Function?*/functionName){
d._onto(d._loaders, obj, functionName);
if(d._postLoad && d._inFlightCount == 0 && !d._loadNotifying){
d._callLoaded();
}
}
초기화 방법을 진정으로 실행하는 것은 Dojo이다.loaded: dojo.loaded = function(){
d._loadNotifying = true;
d._postLoad = true;
var mll = d._loaders;
//Clear listeners so new ones can be added
//For other xdomain package loads after the initial load.
d._loaders = [];
for(var x = 0; x < mll.length; x++){
mll[x]();
}
d._loadNotifying = false;
if(d._postLoad && d._inFlightCount == 0 && mll.length){
d._callLoaded();
}
}
Dojo를 통해.addOnLoad에 추가된 function은 dojo._loaders의 그룹에 있습니다.그러면 loaded 방법을 다시 쓸 수밖에 없습니다.
dojo._inits = [];
dojo.addInit = function(obj) {
dojo._inits.push(obj);
};
dojo.loaded = function(){
var d = dojo;
d._loadNotifying = true;
d._postLoad = true;
var mll = [];
for(var i=0; i<d._loaders.length; i++) {
console.log(d._loaders[i]);
mll.push(d._loaders[i]);
if (d._loaders[i].toString().indexOf('registerWin') > -1)
for(var j=0; j<d._inits.length; j++)
mll.push(d._inits[j]);
}
}
d._loaders = [];
d._inits = [];
for(var x = 0; x < mll.length; x++){
mll[x]();
}
d._loadNotifying = false;
if(d._postLoad && d._inFlightCount == 0 && mll.length){
d._callLoaded();
}
}
저는 Dojo에 가입했습니다_addInit를 통해 등록하는 방법을 저장하는 inits 배열.그리고 Dojo를 통과하는 모든 것을 검사하세요.ready/addOnLoad 가입 방법,dijit에서 등록을 완료(이때 Dojo parse가 종료됨)한 후_inits에 삽입하는 방법이렇게 하면 나는 도조를 통과할 수 있다.addInit는 프레임워크에 처리를 추가하여 항상 Dojo에 있게 합니다.ready/addOnLoad 가입 방법이 실행되기 전에 실행됩니다.테스트:
dojo.ready(function() { console.log(1); });
dojo.ready(function() { console.log(2); });
dojo.addInit(function() { console.log('init'); });
결과: : init
: 1
: 2
Dojo 1.7부터 Dojo.js는 대부분 다시 썼다.dojo.ready의 인터페이스도 변했다.
var ready = dojo.ready = dojo.addOnLoad = function(priority, context, callback)
priority 우선순위 파라미터를 추가하면 위의 실현은 크게 간소화할 수 있다.기본적으로 Dojo를 통과합니다.ready(function() {...}) 가입 방법, 기본priority = 1000.이렇게 하면 아래의 코드를 쉽게 처리할 수 있다.
dojo.addInit = function(obj) { dojo.ready(1, obj); };
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pytest 테스트 프레임워크 기본 사용 방법 상세 정보pytest 소개 2. 매개 변수화를 지원하여 테스트할 테스트 용례를 세밀하게 제어할 수 있다. 3. 간단한 단원 테스트와 복잡한 기능 테스트를 지원할 수 있고selenium/appnium 등 자동화 테스트, 인터페...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.