2016-07-18 5 views
4

これは私のコード行です。配列バッファを文字列に変換:最大呼び出しスタックサイズを超えました

 var xhr = new XMLHttpRequest(); 
     xhr.open('GET',window.location.href, true); 
     xhr.responseType = "arraybuffer"; 
     xhr.onload = function(event) { 
     debugger; 
     console.log(" coverting array buffer to string "); 
     alert(String.fromCharCode.apply(null, new Uint8Array(this.response))); 
     }; 
     xhr.send(); 

このリクエストは、約3MBのサイズのpdf URLに作成しています。いくつかの再帰呼び出しが必要であることを伝えながら、同じエラーのスレッドをいくつか読んでいますが、ここでは再帰呼び出しはありません。どんな助け?

+0

このリクエストはまったく同じページですか? 'window.location.href'でGETを使用していますか? – skobaljic

+0

@skobaljicはい。たとえば、現在のページはhttp://www.cs.columbia.edu/~lok/3101/lectures/02-corejava.pdfです。 –

+0

同じスクリプトを含む同じページを呼び出すと、なぜあなたはあまりにも多くの再帰があるのだろうか?スクリプトなしで他のページを呼び出してみてください。あるいは、xhr経由で呼び出した場合は、スクリプトを再度出力しないでください。あるいは、パラメータを追加して呼び出しを区別してください。 – skobaljic

答えて

7

エラーは、関数の引数の数の制限によって発生します。 "RangeError: Maximum call stack size exceeded" Why?

String.fromCharCode.apply()の代わりに、eを使用してください。 g。 a TextEncoderUint8Array to string in Javascript

+0

こんにちは。私の場合、 'TextEncoder'はどのように使いますか?私はこれを 'var base64 = btoa(String.fromCharCode.apply(null、new Uint8Array(blob))); – iamdevlinph

+1

私は別の[質問](https://stackoverflow.com/questions/49123222/converting-array -buffer-to-string-maximum-call-stack-size-exceeded) – iamdevlinph

関連する問題