아하
생활

생활꿀팁

심각한진도개192
심각한진도개192

자바스크립트 속도 관련 질문드려요

자바스크립트 속도 관련 질문드려요

getCatalogRelationParam에서 변수의 값을

가져와서 fnSearch를 시키는데 셋타임아웃을 안주고

변수를 갖고오는 방법이있을까요

55글자 더 채워주세요.
4개의 답변이 있어요!
  • 차분한기러기89
    차분한기러기89

    50 이라는 임의의 숫자로 보이는 느낌의

    숫자가 들어가있는 모양을 보면 아마

    getCatalogRelationParam 는 비동기적으로 작동하고

    이것의 작동이 완료된후 fnSearch() 해줘야하는데

    getCatalogRelationParam 가 언제 끝날지 몰라서

    임의의 50을 주어 기다려주도록 처리한건가요?

    그게 맞다면

    getCatalogRelationParam 함수가 콜백을 받거나

    Promise 객체를 리턴해야합니다.

    이 모든 과정이 비동기로 작동된다면

    async await 를 이용하거나 callback 을 넘겨주는 방법으로

    비동기의 순서를 동기화 할 수 있습니다.

  • 질문상 난해한점이 많아 이해되는데로 답변 남깁니다.

    우선 비동기통신을 사용하고 있기 때문에 setTimeout 함수를 사용해 처리하고 있는것으로 보여집니다.

    여기서 발생할수 있는 문제점들은 다양하나
    가장큰 문제는 현재 적용한 setTimeout 50 이라는 시간내에 처리되지 않을 경우
    원하는 결과물을 얻을수 없다는 점입니다.

    간단히 비동기란 다수의 주문을 받고 주문 순서와 관계없이 완료되는것을 말합니다.

    이러한 문제점을 해결하기 위해 고안된 방법중 하나가 promise 입니다.

    이와 같이 비동기통신으로 인한 문제라면 promise 를 사용해보시길 바랍니다.







  • getCatalogRelationParam함수를 확인해 볼수 없는 상황이지만

    getCatalogRelationParam의 실행이 비동기적으로 되어있을 가능성이 큽니다.

    소스가 순차적으로 실행이된다면 settimeout이 들어가 필요가 전혀 없습니다.

    그러므로 필요한 것은 getCatalogRelationParam이 ajax를 통해 콜백 함수에서

    파라메터를 세팅한다면 해당 콜백함수에 fnSearch가 실행될 수 있도록 수정하시거나

    getCatalogRelationParam의 ajax를 동기식으로 변경하는 방법이 있을 수도 있을 것 같습니다.

    일부만 봐서는 정확한 원인이나 가장 좋은 방안을 제시해 드리기 어렵네요

  • 적어주신 getCatalogRelationParam 는 함수의 원형이 없어서 무엇이 문제인지 알기가 힘듭니다.

    getCatalogRelationParam가 따로 서버통신등이 없이 즉시 실행되고 반환된다고 가정하면

    이 경우에는 굳이 셋타임아웃을 주지않아도 linkPage 를 실행시켜도 전혀 문제될게 없어보입니다.

    애초에 현재 소스코드만 보면 셋타임아웃이 왜 필요한지 이해가 잘 가지않습니다.

    searchForm 이나 pagingForm 이 getCatalogRelationParam 를 이용하여 값을 집어넣나요??

    추가적으로 셋타임아웃 50정도로 잘 동작한다면 밀리세컨드이기때문에 사람의 인지능력상 차이점을 알수없습니다.

    1000 = 1초로 넣어도 자주 사용되는 함수가 아니라면 대부분의 사람은 인지에 큰 차이를 느끼지 못합니다.