JavaScript / Node.js HTTP Get Request – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self JavaScript / Node.js HTTP Get Request Sun, 14 Feb 21 15:12:47 Z https://forum.selfhtml.org/self/2021/feb/14/javascript-node-js-http-get-request/1784143#m1784143 https://forum.selfhtml.org/self/2021/feb/14/javascript-node-js-http-get-request/1784143#m1784143 <p>Hallo zusammen,</p> <p>nach vielen Jahren PHP versuche ich mich erstmals an einer node.js-Anwendung. Die Anwendung soll per HTTP-Get-Request ein Bild von einem externen Server anfordern und in einem weiteren Schritt dann bearbeiten. Das Ganze soll später intern in einem Firmennetz eingesetzt werden, sodass die Urheberrechtsfrage hier vorerst nicht von Relevanz ist.</p> <p>Ich bin noch dabei, mir die Grundlagen von Node und serverseitigem JavaScript anzueignen. Und hier scheitert es leider im Moment schon.</p> <p>Konkret habe ich folgende Frage: Warum ist der Array <code>image_data</code> am Ende des Skripts leer obwohl er in innerhalb der <code>http.request()</code>-Funktion noch gefüllt ist?</p> <pre><code class="block">import * as http from 'http'; const url = { host: 'src.selfhtml.org', // Ist hier nur eine Beispiel-URL path: '/selfhtml.png' } let image_data = []; http.request(url, res => { res.on('data', chunk => image_data.push(chunk)); }).end(); console.log(image_data); </code></pre> JavaScript / Node.js HTTP Get Request Sun, 14 Feb 21 15:23:16 Z https://forum.selfhtml.org/self/2021/feb/14/javascript-node-js-http-get-request/1784144#m1784144 https://forum.selfhtml.org/self/2021/feb/14/javascript-node-js-http-get-request/1784144#m1784144 <p>Tach!</p> <blockquote> <p>Konkret habe ich folgende Frage: Warum ist der Array <code>image_data</code> am Ende des Skripts leer obwohl er in innerhalb der <code>http.request()</code>-Funktion noch gefüllt ist?</p> </blockquote> <p>Das ist ein zeitliches Problem. Das Array wird erst dann gefüllt, wenn der Callback aufgerufen wird. Dein console.log() wird aber sofort nach dem Start des Requests ausgeführt, da ist der Request noch unterwegs, und das Array ist noch leer.</p> <p>Willkommen bei der asynchronen Programmierung. Alles was darauf aufbaut, dass ein asynchroner Vorgang beendet ist, muss im Callback ausgeführt werden oder von diesem aus aufgerufen werden.</p> <p>dedlfix.</p> JavaScript / Node.js HTTP Get Request Sun, 14 Feb 21 15:56:41 Z https://forum.selfhtml.org/self/2021/feb/14/javascript-node-js-http-get-request/1784146#m1784146 https://forum.selfhtml.org/self/2021/feb/14/javascript-node-js-http-get-request/1784146#m1784146 <p>Danke, das hilft!</p> <p>Erfordert offensichtlich ein bisschen mehr Umdenken, wenn man da mit PHP-Hintergrund anfängt. </p>