기안기 띄어질 때 속도 관련

안녕하세요.!

await (자체적으로 한글 api을 활용해서 기안기를 띄우고, 내용을 넣어주는 함수, Promise로 감싸서 await 사용 가능)
await (위와 동일)
await (위와 동일)
await (위와 동일)

이렇게 한 페이지에 4개의 기안기를 띄우고 있습니다.
근데 하나의 기안기를 띄우고 SetTextFile까지 해서 평균 1.7초가 걸려 총 4초정도나 걸립니다.

다른 방법이 있는지, 문의드립니다.

  1. 원래 이렇게 시간이 걸리는게 맞나요? → 다른 방법이 있는지
  2. 자체적으로 Promise로 감싸준 함수를 그냥 await을 제거하고 쓰면 비동기로 작동되어서 잘 나올 거 같은데(독립적으로 띄어져도 되니깐), 현재는 그렇게 되지 않습니다. 4개의 기안기가 데이터가 섞이거나, 기안기가 초기화(화면에) 되지 않아서, 동기식으로 하나의 기안기를 띄우고 그 다음에 기안기를 띄우는 방식으로 사용하고 있습니다. 다른 방법이 있는지 질문드립니다.

안녕하세요.

한페이지에 웹한글기안기를 띄우실때, 각각의 웹한글기안기를 별도의 iframe으로 감싸서 로딩하시는 것을 추천드립니다.

예를들어 원래 웹한글기안기를 띄우는 index.html을 hwpctrlframe.html으로 고쳐서 변경한 뒤, 아래의 코드처럼 iframe으로 hwpctrlframe.html을 띄웁니다.

<iframe id="Document_HwpCtrl1" src="./hwpctrlframe.html?id=hwpctrl1" width="500pt" height="800pt"></iframe>
<iframe id="Document_HwpCtrl2" src="./hwpctrlframe.html?id=hwpctrl2" width="500pt" height="800pt"></iframe>
<iframe id="Document_HwpCtrl3" src="./hwpctrlframe.html?id=hwpctrl3" width="500pt" height="800pt"></iframe>

이때 hwpctrlframe.html에 id값을 넘기는 것은 iframe 안에서 생성된 컨트롤을 구분하기 위한 값입니다.

hwpctrlframe.html 안에서는 이전처럼 웹한글기안기를 생성하면 됩니다. 단, 이때 생성후 콜백함수에서 부모 윈도우로 전달받은 id를 메세지로 전달합니다.

var HwpCtrl = BuildWebHwpCtrl("hwpctrl", "http://주소", function() {
    var id = getQueryVariable('id'); // hwpctrlframe.html로 전달받은 키값을 얻어오는 함수
    winddow.parent.postMessage(id, "*");
});

위 콜백함수가 호출되면, iframe 밖에서 메세지를 수신할 수 있습니다. 전달받은 id로 생성된 hwpctrl 전역객체를 생성하면 됩니다.

<script>
var HwpCtrl1, HwpCtrl2, HwpCtrl3
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event) {
    if (event.data == "hwpctrl1") {
        var HwpFrame = document.getElementById("Document_HwpCtrl1");
        HwpCtrl1 = HwpFrame.contentWindow.HwpCtrl;
    }
    else if (event.data == "hwpctrl2") {
        var HwpFrame = document.getElementById("Document_HwpCtrl2");
        HwpCtrl2 = HwpFrame.contentWindow.HwpCtrl;
    }
    else if (event.data == "hwpctrl3") {
        var HwpFrame = document.getElementById("Document_HwpCtrl3");
        HwpCtrl3 = HwpFrame.contentWindow.HwpCtrl;
    }
}
</script>

위처럼 웹한글기안기를 띄울 경우 병렬로 웹한글 기안기가 로딩되므로, 좀더 빠르게 로딩이 될 겁니다.

감사합니다.