0

スクリプト初心者なのでよろしくお願いします。
jquery-csv パーサーを使用して、ローカル ファイルからグラフを作成しようとしています。グーグルビズを使用。
コードのこのセクションでは、戻り値を取得できないようです。選択した解析済みファイルの戻り値を要求します。

コールバックを使用する方が良いですか? どうすればそれを実装できますか?試してみましたが、うまくいかないようです。

 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); };

}

画面に表形式でデータを表示するように変更されたこのコードを既に使用していますが、Googleサーバーにデータを取得する際に壁にぶつかりました。

アドバイスや指針をいただければ幸いです。

4

2 に答える 2

1

「コールバックを使ったほうがいいですか?」

はい、これが適切な解決策です

「それをどのように実装しますか?」

  1. 関数の 2 番目の引数を定義しますchartData

  2. を呼び出すときにchartData、2 番目の引数としてコールバックを渡します。

  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);
});
于 2012-10-22T20:00:11.333 に答える
0

まず、親切にするように頼まないでください。それはあなたの「不親切な」仮定です。

通常、非同期関数から値を返すことはできません。値を返す理由を検討し、別の角度から見ることができるかどうかを確認する必要があります。たとえば、parsedData で何をする必要がありますか? テキストエリアにデータを入力しますか? Dom にいくつかの要素を追加しますか?

parsedData から必要なものをお知らせください。サポートいたします。

最後に、必死になって応答をウィンドウなどのグローバル オブジェクトにアタッチできますが、それによって他の多くの問題が発生します。

于 2012-10-22T20:01:19.740 に答える