1
감안할 때 :순환 종속성을 처리하는 방법은 무엇입니까?
StringPreconditions
는StringPreconditions
Preconditions
이ObjectPreconditions
및StringPreconditions
에 게이트 키퍼입니다 (그 방법 중 하나는 서브 클래스를 반환)에ObjectPreconditions
ObjectPreconditions
가 따라 확장 (확인하고 그들이 인스턴스를 반환하기 전에 모두로드)User
은Preconditions
이 코드를 가지고 :
define(["ObjectPreconditions"], function(ObjectPreconditions)
{
console.log("Inside StringPreconditions");
function StringPreconditions() {}
StringPreconditions.prototype = Object.create(ObjectPreconditions.prototype);
StringPreconditions.prototype.constructor = ObjectPreconditions;
return StringPreconditions;
});
define(["require"], function(require)
{
console.log("Inside ObjectPreconditions");
// Resolve circular dependencies
var StringPreconditions;
require(["StringPreconditions"], function(theStringPreconditions)
{
StringPreconditions = theStringPreconditions;
console.log("ObjectPreconditions finished loading StringPreconditions");
});
function ObjectPreconditions() {}
ObjectPreconditions.prototype.isInstanceOf(type)
{
console.log("ObjectPreconditions.isInstanceOf() invoked");
if (type === String)
return new StringPreconditions();
}
});
define(["ObjectPreconditions", "StringPreconditions"], function(ObjectPreconditions, StringPreconditions)
{
console.log("Inside Preconditions");
var Preconditions = {};
Preconditions.requireThat(parameter) = function()
{
return new ObjectPreconditions(parameter);
};
return Preconditions;
});
define(["Preconditions"], function(Preconditions)
{
console.log("Inside User");
function User() {}
User.prototype.doSomething = function()
{
var StringPrecondition = Preconditions.requireThat("test").isInstanceOf(String);
}
});
문제는 그 나는이로드 순서 얻는 시간의 10 % :
- 내부 전제 조건
- 내부 ObjectPreconditions 사용자 내부를
- 인사이드 StringPreconditions
- ObjectPre conditions.isInstanceOf() (CRASH StringPreconditions이 정의되어 있기 때문에)
- ObjectPreconditions 완료 로딩 StringPreconditions
는 이미 http://requirejs.org/docs/api.html#circular을 읽었습니다하지만 나는 그들이 내가 같은 일을하고있다 생각합니다.
아이디어가 있으십니까?
이 올바른있을 수 있습니다,하지만 당신은 등 변수 이름을 단순화 할 수 있습니다, 따라하기가 매우 어렵다 찾을? –