9

für Ich schreibe Code zurückgegebenen Daten zu bekommen. zuerst nennen i getsomedata Funktionsdaten zu erhalten und innerhalb getsomedata Funktion ich eine andere Funktion getRandomdata nenne Daten zu bekommen und es zurück zur vorherigen Funktion zurückkehren, aber es kehrt nicht definiert. aber in getRandomdata Daten bekommen. irgendwo reden über Rückrufe zu verwenden. Ich bin neu in Javascript. bitte hilfe. mein Code sieht aus wie.Javascript-Funktion nicht definierten Wert in Knoten js

router.get('/get-data', function(req, res, next) { 

    var result = getsomedata(some_parameter); 

    console.log(result); // recieving undefined 
    res.send(result); 
}); 

function getsomedata(some_parameter_recieved) { 

    var getsomedata = getRandomdata(random_params); 

    console.log (getsomedata); // recieving undefined 
    return getsomedata; 
} 

function getRandomdata(random_params_recieved) { 

    // after some calculation 
    console.log(random_data);   // recieving prpper data 
    return random_data; 
} 
+3

Willkommen bei 'asynchronous' Programmierung! Lesen Sie mehr über 'callbacks' oder' Promise' – Rayon

+0

Sie wahrscheinlich brauchen Werte aus der 'callback' zurückzukehren. Versuchen Sie, dieses http://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/ –

+0

Mögliche Duplikat von [Wie Wert von einer asynchronen Callback-Funktion zurückzukehren?] (Http://stackoverflow.com/questions/6847697/how-to-Return-Wert-von-einem-asynchron-Callback-Funktion) – Gavriel

Antwort

20

Statt return, sollten Sie callbacks verwenden, da in asynchronous Operationen nicht return warten, der I/O Vorgang abzuschließen zu.

Versuchen Sie folgendes:

router.get('/get-data', function(req, res, next) { 
 
    getsomedata(some_parameter, function(result) { 
 
    console.log(result); 
 
    res.send(result); 
 
    }); 
 
}); 
 

 
function getsomedata(some_parameter_recieved, callback) { 
 
    getRandomdata(random_params, function(random_data) { 
 
    callback(random_data); 
 
    }); 
 
} 
 

 
function getRandomdata(random_params_recieved, callback) { 
 
    // after some calculation 
 
    callback(random_data); 
 
}

+1

Vielen Dank .. :) – iam