0

초보자를 스크립팅하기 때문에 친절하게 대해주십시오.
jquery-csv 파서를 사용하여 로컬 파일에서 차트를 만들려고합니다. google viz를 사용합니다.
코드의이 부분은 반환 값을 가져 오는 것 같습니다. 선택한 구문 분석 된 파일의 반환 값이 필요합니다.중첩 된 함수에서 반환 값 가져 오기

콜백을 사용하는 것이 더 좋습니까? 어떻게 구현할 수 있을까요? 시도했지만 그것을 얻을 권리를 얻을 것 같습니다.

function chartData(fileToParse) { 
var reader = new FileReader(); 
reader.readAsText(fileToParse); 
reader.onload = function(){ 
    var csv = event.target.result; 
var parsedData = $.csv.toArrays(csv,{onParseValue:$.csv.hooks.castToScalar}); 
return parsedData 
}; 
return reader.onload.value; 

reader.onerror = function(){ alert('Unable to read ' + file.fileName); }; 

}

난 이미 화면에 테이블 형태로 데이터를 표시하도록 수정이 코드를 사용했지만 구글 서버에 점점로 벽에 충돌했다.

모든 조언이나 조언을 크게 주시면 감사하겠습니다.

+0

'반환 reader.onload.value 읽어 줄 의도 한 결과가 무엇입니까; '? chartData 함수가 독자의 onload 메서드에 의해로드 된 값을 반환하기를 바랍니까? –

+0

필자는 (생각합니다) csv에서 파싱 된 데이터를 필요로하므로 'arraytoDataTable'을 사용할 수 있습니다. 아래를보십시오. 고맙습니다. – Tribblehunter

답변

1

"콜백을 사용하는 것이 더 낫습니까?"

예,이 것이 적절한 솔루션

"그리고 난 그걸 구현하는 것이 방법?"

  1. chartData 함수의 두 번째 인수를 정의합니다.

  2. chartData을 호출 할 때 두 번째 인수로 콜백을 전달하십시오.

  3. 이벤트 핸들러 내에서 함수를 호출하는 것과 같은 방법으로 콜백을 호출하지만 원하는 데이터를 전달합니다.


    // receive it-----v 
function chartData(fileToParse, callback) { 
    var reader = new FileReader(); 
    reader.readAsText(fileToParse); 
    reader.onload = function() { 
     var csv = event.target.result; 
     var parsedData = $.csv.toArrays(csv, { 
      onParseValue: $.csv.hooks.castToScalar 
     }); 
     callback(parsedData); // call it 
    }; 

    reader.onerror = function() { 
     alert('Unable to read ' + file.fileName); 
    }; 
} 

그래서 당신은이처럼 호출 할 것 :

chartData('file/path', function(parsed) { 
    console.log(parsed); 
}); 
+0

신속한 답장을 보내 주셔서 감사합니다. – Tribblehunter

+0

죄송합니다. 틀린 열쇠. 그냥 시도하고 '배열'을 던져 버렸습니다. 코드를 다시 보아라. 나는 내가 뭔가를 놓쳤다 고 생각하고있다. – Tribblehunter

+0

모든 도움을 주셔서 다시 한 번 감사드립니다. 위의 코드는 효과가 있었지만 대부분의 다른 시도는 일종의 방식으로 진행된 것으로 보입니다. 문제를 일으키는 jquery-csv는 멋지게 코드를 분석하지만 google은 이해하지 못합니다. 더 나아가 그것을보고. – Tribblehunter

0

먼저 떨어져, 그는 "불친절한"가정처럼 친절하도록 요청하지 마십시오 사용자의 부분에

일반적으로 비동기 함수에서 값을 반환 할 수 없습니다. 왜 값을 반환하고 다른 각도에서 볼 수 있는지 확인해야하는 이유를 고려해야합니다. 예를 들어, parsedData를 사용하여 수행해야하는 작업은 무엇입니까? 텍스트 영역을 채우는가? Dom에 일부 요소를 첨부 하시겠습니까?

parsedData에서 필요한 것을 알려 주시면 도와 드리겠습니다.

마지막으로는, 절망에서 당신은 창으로 전역 객체에 응답을 첨부 할 수 있지만 다른 문제의 호스트를 생성합니다

+0

'친절한'의견에 대해 사과드립니다. 그것은 좋은 맛을 의미했다. – Tribblehunter

+0

죄송합니다. 리턴 키를 중지해야합니다. 값은 Google 차트로 전송되지만 코드를 조정하면 '유효한 2D 배열이 아닙니다.'가 반환됩니다. 어레이가 어떻게 구성되고 다른 Google viz 코드와 비교되는지 자세히 살펴볼 예정입니다. 지금까지 oyur 도움을 주셔서 감사합니다. – Tribblehunter

관련 문제