Skocz do zawartości

Zdjęcie
- - - - -

Javascript zwracanie wartośći, zakończenie wykonywania skryptu

azure node.js javascript socket

1 odpowiedź w tym temacie
  • Zaloguj się, aby dodać odpowiedź
zmichal
0
Neutralna

Napisano 07 marca 2014 - 21:13

#1

Witam,
Mam stworzony w Mobile Service w usłudze Azure. Dodatkowo mam utworzone tam własne API, które jest skryptem Javascript na silniku node.js.

Mam problem ze zwróceniem wartośći funkcji która jest wywoływana z innej funkcji.
function2 wywołuje function1, po wykonaniu się function1 powinna zwrócić wartość result albo zakończyć wyonywanie wszytskich skryptów w API. Niestety jeżeli zwracanm wartosc to jest ona "undefined", a przerwa wykonywanie mi się nie udaje.

function1:

function function1(item,response) {
    var buf ='';
    var net = require('net');
    var HOST = 'xxx.xxx.xxx.xxx';
    var PORT = xxxx;

    var client = new net.Socket();
    client.setTimeout(100000, function() {
        console.log("Timeout");
        response.send(500, "Timeout");
    });

    client.connect(PORT, HOST, function() {
        client.write(item + "\n");
        client.on('data', function(data) {
            buf = buf + data.toString('utf-8');         
        });

        client.on('close', function() {
        });

        client.on('end', function() {
            if (buf.length > 1) {    
                    var result = JSON.parse(buf);
                    if ( result.Avaiable) {                                                   
                         console.log('Odpowiedz ' + buf);
                         return result;
                         //w tym momencie zwracana jest wartosc, albo powinno byc przerwane wykonywanie się skryptów
                    }
            }           
             client.destroy();             
        });                                      
    });  
}

function2:

function function2(results, response, item) {
    var json = JSON.stringify(item,response);      
    var wynik = function1(json,response);
    response.send(200,wynik);
    console.log(json);
}

  • 0

vms

    Użytkownik

  • 81 postów
    • Czas spędzony online: 5h 33m 5s
28
Bardzo dobra

Napisano 11 marca 2014 - 11:12

#2

function1 nic nie zwraca. Funkcja anonimowa, która zwraca result jest wywoływana asynchronicznie, po wystąpieniu zdarzenia end (tak zakładam, bo nie znam node.js).

Jeśli chcesz to przechwycić to musisz stworzyć listenera na to zdarzenie. Lub zrobić dispatch'a na własne zdarzenie i je przechwycić.

Poczytaj o addeventlistener w JS.


  • 2





Podone tematy Collapse


Również z jednym lub większą ilością słów kluczowych: azure, node.js, javascript, socket

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych