質問編集履歴
1
fetchを使う方向で、いただいたコードとともに挙動の確認をしたので追記にまとめました。
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -73,7 +73,83 @@ | |
| 73 73 | 
             
             length:0
         | 
| 74 74 | 
             
            と出力されてしまいました。
         | 
| 75 75 |  | 
| 76 | 
            +
            ##追記
         | 
| 76 77 |  | 
| 78 | 
            +
            昨日fetchの方が適しているとのご意見をいただき、調べながら確認したことをまとめます。
         | 
| 79 | 
            +
            ご教示いただいた下記コードですが、
         | 
| 80 | 
            +
             | 
| 81 | 
            +
            const getCSV=()=>fetch('sample.csv').then(res=>res.text()).then(csvArray);
         | 
| 82 | 
            +
            const csvArray=str=>str.split("\r\n").map(x=>x.split(","));
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            (async ()=>{
         | 
| 85 | 
            +
              const result=await getCSV();
         | 
| 86 | 
            +
              console.log(result); ※1
         | 
| 87 | 
            +
            })();
         | 
| 88 | 
            +
             | 
| 89 | 
            +
            //↑この外でresultを参照できませんでした。
         | 
| 90 | 
            +
             | 
| 91 | 
            +
            console.log(result) //Uncaught・・・
         | 
| 92 | 
            +
             | 
| 93 | 
            +
            //※1では
         | 
| 94 | 
            +
            //(5) [Array(2), Array(2), Array(2), Array(2), Array(2)]
         | 
| 95 | 
            +
            //0: (2) ['"0001"', '11']
         | 
| 96 | 
            +
            //1: (2) ['"0002"', '12']
         | 
| 97 | 
            +
            //2: (2) ['"0003"', '13']
         | 
| 98 | 
            +
            //3: (2) ['"0004"', '14']
         | 
| 99 | 
            +
            //のように出力され、配列になっていました。
         | 
| 100 | 
            +
             | 
| 101 | 
            +
            //そこで、resultを最初に定義してみましたが、
         | 
| 102 | 
            +
             | 
| 103 | 
            +
            let result = []
         | 
| 104 | 
            +
             | 
| 105 | 
            +
            const getCSV=()=>fetch('sample.csv').then(res=>res.text()).then(csvArray);
         | 
| 106 | 
            +
            const csvArray=str=>str.split("\r\n").map(x=>x.split(","));
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            (async ()=>{
         | 
| 109 | 
            +
              result=await getCSV();
         | 
| 110 | 
            +
              console.log(result);
         | 
| 111 | 
            +
            })();
         | 
| 112 | 
            +
             | 
| 113 | 
            +
            console.log(result)
         | 
| 114 | 
            +
             | 
| 115 | 
            +
            //以下のような出力結果になりました。
         | 
| 116 | 
            +
            //[]
         | 
| 117 | 
            +
            // length: 0
         | 
| 118 | 
            +
            // [[Prototype]]: Array(0)
         | 
| 119 | 
            +
            //(5) [Array(2), Array(2), Array(2), Array(2), Array(2)]
         | 
| 120 | 
            +
            // 0: (2) ['"0001"', '11']
         | 
| 121 | 
            +
            // 1: (2) ['"0002"', '12']
         | 
| 122 | 
            +
            // 2: (2) ['"0003"', '13']
         | 
| 123 | 
            +
            // 3: (2) ['"0004"', '14']
         | 
| 124 | 
            +
             | 
| 125 | 
            +
            resultの中身が空のままになってしまいました。
         | 
| 126 | 
            +
            resultを配列として別の関数で参照したり、result[1]などのように扱いたいので
         | 
| 127 | 
            +
            グローバル変数としたいと思っています。
         | 
| 128 | 
            +
            自分でも調べながらやってみたのですが、
         | 
| 129 | 
            +
             | 
| 130 | 
            +
            let result = fetch("sample.csv").then(res=>res.text()).then(function convertCSVtoArray(str){
         | 
| 131 | 
            +
            const temp = str.split("\r\n")
         | 
| 132 | 
            +
            for(let i=0;i<temp.length;++i){
         | 
| 133 | 
            +
                result[i] =temp[i].split(",")
         | 
| 134 | 
            +
              }
         | 
| 135 | 
            +
            })
         | 
| 136 | 
            +
             | 
| 137 | 
            +
            console.log(result)
         | 
| 138 | 
            +
             | 
| 139 | 
            +
            //↑のようにすると、以下のように出力されます。
         | 
| 140 | 
            +
             | 
| 141 | 
            +
            //Promise {<pending>}
         | 
| 142 | 
            +
            //0: (2) ['"0001"', '11']
         | 
| 143 | 
            +
            //1: (2) ['"0002"', '12']
         | 
| 144 | 
            +
            //2: (2) ['"0003"', '13']
         | 
| 145 | 
            +
            //3: (2) ['"0004"', '14']
         | 
| 146 | 
            +
             | 
| 147 | 
            +
            Promiseの概念がつかめていないままなのですが、
         | 
| 148 | 
            +
            pendingとなっているということは、値は検出してるけど、
         | 
| 149 | 
            +
            まだresultに取得できていないということでしょうか?
         | 
| 150 | 
            +
             | 
| 151 | 
            +
             | 
| 152 | 
            +
             | 
| 77 153 | 
             
            ### 補足情報(FW/ツールのバージョンなど)
         | 
| 78 154 |  | 
| 79 155 | 
             
            ここにより詳細な情報を記載してください。
         | 
