RequireJS의 싱글 톤

알렉사

RequireJS를 사용하여 간단한 싱글 톤을 만들고 싶습니다.

이 같은:

// js/modules/singleton.js
define([], function () {
    var Singleton = function() {
        this.value = 10;
    }
    return new Singleton();
 });

내 주요 항목에는 다음 코드가 있습니다.

    // main.js
    require.config({
          paths: {
            singleton: 'js/modules/singleton'
          },
          shim: {

          }
    });

    var o1 = require(["singleton"]);  
    var o2 = require(["singleton"]);

console.log(o1 === o2);     // true
console.log(o1.value);      // undefined (?!)
console.log(o2.value);      // undefined (?!)

o1.value = 20;
console.log(o1.value);      // 20
console.log(o2.value);      // 20

o2.value = 30;
console.log(o1.value);      // 30
console.log(o2.value);      // 30

변수 o1 및 o2가 동일한 싱글 톤 인스턴스 (o1 === o2)를 올바르게 가리키고 있었지만, o1.valueo2.value가 정의되지 않은 이유는 무엇 입니까 ??

이렇게 초기화 되었기 때문에 "value"속성은 이와 같이 = 10이 될 것으로 예상합니다.

시르 코

귀하의 문제는 거의 경쟁 조건입니다.

다음과 같은 간단한 (동기!) 호출

var o1 = require(["singleton"]);

의 비동기 버전을 사용하여 이전에로드 된 경우에만 모듈을 반환합니다 require().

따라서 문제를 해결하려면 다음 require()과 같이 비동기 호출로 코드를 래핑 하면됩니다.

require( ['singleton'], function( singleton ){

    o1 = singleton;
    o2 = singleton;

    console.log(o1 === o2);     // true
    console.log(o1.value);      // 10
    console.log(o2.value);      // 10

    o1.value = 20;
    console.log(o1.value);      // 20
    console.log(o2.value);      // 20

    o2.value = 30;
    console.log(o1.value);      // 30
    console.log(o2.value);      // 30
});

예제 바이올린

RequireJS 문서 인용 (강조 표시 추가) :

콘솔 디버깅 : require(["module/name"], function(){})JavaScript 콘솔에서 호출을 통해 이미로드 한 모듈로 작업해야하는 경우 모듈 의 문자열 이름을 사용하여 가져 오는 require () 양식을 사용할 수 있습니다.

require("module/name").callSomeFunction()

"모듈 / 이름은"이전 요구의 비동기 버전을 통해로드 한 경우이 경우에만 작동합니다 : require(["module/name"]). './module/name'과 같은 상대 경로를 사용하는 경우 이들은 define 내부에서만 작동합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Svelte의 싱글 톤

분류에서Dev

DependencyInjection의 싱글 톤

분류에서Dev

서블릿의 싱글 톤

분류에서Dev

PHP의 싱글 톤 객체

분류에서Dev

싱글 톤 패턴의 ClassLoader

분류에서Dev

iOS의 싱글 톤 객체

분류에서Dev

자바의 싱글 톤과 C ++의 싱글 톤

분류에서Dev

싱글 톤 UIViewController

분류에서Dev

코 틀린의 개조 싱글 톤

분류에서Dev

dll의 C ++ 템플릿 싱글 톤

분류에서Dev

싱글 톤 또는 의존성 주입

분류에서Dev

스프링 빈의 싱글 톤 구현

분류에서Dev

싱글 톤 및 .dll의 std :: thread 블록

분류에서Dev

xib가있는 UIViewController의 싱글 톤

분류에서Dev

싱글 톤의 정적 메서드

분류에서Dev

시간 기반 수명의 싱글 톤

분류에서Dev

Java의 싱글 톤 클래스 이해

분류에서Dev

싱글 톤 클래스의 수명

분류에서Dev

.Net의 싱글 톤 내부 개체

분류에서Dev

생성자의 C ++ 싱글 톤

분류에서Dev

단검이 싱글 구성 요소는 싱글 톤에 의존

분류에서Dev

싱글 톤 방식

분류에서Dev

싱글 톤 오류

분류에서Dev

글로벌 변수 또는 싱글 톤의 대안

분류에서Dev

싱글 톤을 만들 때 싱글 톤 내의 범위가 반복되는 이유는 무엇입니까?

분류에서Dev

Ruby의 싱글 톤 클래스 내에서 싱글 톤 메서드를 호출합니까?

분류에서Dev

원자 회원들과 싱글 톤 클래스의 구현

분류에서Dev

React Context와 JS 싱글 톤의 차이점

분류에서Dev

NPM 종속성 관리의 싱글 톤 클래스