[node.js ]Jak zwrocic zmienna z callback?

0

Witam wszystkich

Potrzebuje pobrac i przetworzyc plik po http. Pobrac i wyswietlic plik mi sie udalo, ale nie mam pojecia jak przekazac zawartosc tego pliku poza callback. Probowalem uzyc funkcji wewnatrz ktorej pobralem plik, a nastepnie zwrocic ten plik, ale nie udalo sie. Jak sie do tego zabrac? Najgorsze jest to, ze wiekszosc przykladow w necie odnosnie roznych zagadaniec uzywa callback i utknalem na tym.

var request = require('request');
request.get('http://IP/list.json', function (error, response, body)
{
    if (!error && response.statusCode == 200)
	{
        var json = body;
        // Continue with your processing here.
		console.log(json);
		return json;
    }
});
3

Nie przekażesz poza callback bo callback wykonuje się asynchronicznie, kod wkoło już się dawno wykonał dopiero wykonuje się callback. Musisz nauczyć się myśleć asynchronicznie by robić cokolwiek w js.

0

Dopiero co znalazlem lopatoligiczne wytlumaczenie co to jest ten callback i zgadza sie z tym co napisales. Widac, ze javascript bedzie wymagal zmiany przyzwyczajen.
https://www.tutorialspoint.com/nodejs/nodejs_callbacks_concept.htm

To mam takie pytanie zwiazane z tym podejsciem.
Zalozmy, ze klient wysyla zapytanie do serwera zrobionego przy uzyciu node.js. Node.js zanim odpowie, musi pobrac jakis plik i dopiero po przetworzeniu, moze zwrocic plik do klienta. Jak w takim razie cos takiego zrobic? Skoro skrypt dojdzie do funkcji zwracajacej dane do klienta, to co mi z callback-a, skoro skrypt sie juz zakonczyl?
Przeciez callback nie bedzie wiedzial komu zwrocic te dane, skoro polaczenie sie zakonczy. A moze bedzie wiedzial?

1

Nie lepiej async/await?

0

@stivens niech się nauczy podstaw, zresztą do tej pory async/await nie jest jakoś często stosowane bo i czemu by marnować to co jest naturalne dla js?

Autorze wątku, nie kumam co chcesz zrobić :) Rozpisz to jakoś po ludzku.

0

console.log(json); - zamiast console.log napisz kontynuacje po prostu

1

@Paweleczek: Wynik przekazujesz nie 'z callback' ale w callback definiujesz co ma być zrobione przez ten callback z wynikiem kiedy będzie on już dostępny.

@stivens
async/await to Promise i resolve/reject a nie prosty callback - kto nie rozumie callback nie zrozumie ani Promise ani syntactic sugar async/await

@Paweleczek
Co się dzieje po wywołaniu callback?
Zacznij od

0
mr_jaro napisał(a):

@stivens niech się nauczy podstaw, zresztą do tej pory async/await nie jest jakoś często stosowane bo i czemu by marnować to co jest naturalne dla js?

Autorze wątku, nie kumam co chcesz zrobić :) Rozpisz to jakoś po ludzku.

Mam dwa skrypty:

  1. skrypt ktory uzywa express.js do obslugi zapytan.
    Nic szczegolnego. W zaleznosci od parametru url-a, node.js wylacza program (zwykly exec linuksowy) i uruchamia ten sam program z innym plikiem konfiguracyjnym. To mi dziala. Chce do tego dodac, zeby mi zwracal status tego uruchamianego execa w osobnym zapytaniu. Ten exec serwuje status w formie pliku json przy uzyciu http.

  2. skrypt zajmujacy sie pobieraniem pliku json, przetworzeniem go i nastepnie zwracajacym wynik do skryptu nr1 ktory bedzie zwracal zawartosc do klienta.
    Obecnie mam ogarniete pobieranie pliku i parsowanie json-a.

Takie sa moje plany, ale cos ciezko idzie. Nie potrzebuje zadnych wodotryskow. Zwrotka do klienta moze byc zwyklym txt.

0
Paweleczek napisał(a):

cos ciezko idzie.

Weź jakiś porządny, duży (spoko - darmowy) tutorial i go przerób.

0

A do czego te tutoriale brac? Do javascriptu, czy node.js. Kiedys czytalem, ze node.js, to javascript uruchamiany z command line, ale jak tak patrze, to poza skladnia, to sporo rzeczy sie rozni.

0

Biblioteki sie roznia bo np. w przegladarce nie bedziesz miec filesystem ale asynchronicznosc to cecha jezyka. Zwyczajnie musiales nie miec do czynienia z takim interfejsem w innych bibliotekach.

https://www.valentinog.com/blog/http-js/

1 użytkowników online, w tym zalogowanych: 0, gości: 1