2017-07-09 2 views
0

Ich bin neu bei Nodejs und Javascript und arbeiten an Nodejs API-Code. Ich verwende GandiAPI, um domainAvaliablity (projektbezogene Anforderung) zu überprüfen, und habe so eine get-request-Methode (checkDomainAvaliablity) erstellt.Holen Sie sich den Wert von Callback-Funktion und auf Eltern-Funktion

exports.checkDomainAvaliablity = function (req, res) { 
    gandiApi.methodCall('domain.available', [gandiapikey, [domain]], callback)  
    }; 

Und ich habe eine Rückruffunktion, die 2 Parameter haben (die ich nicht ändern kann). Ich kann den Wert in meiner Rückruffunktion erfolgreich erhalten. Jetzt möchte ich "Wert" aus Callback und möchte in "res" Parameter der checkDomainAvaliablity-Funktion (Parent-Funktion) (so etwas wie res.json (Task)).

var callback = function (error, value) { 

    console.dir(value) 
    if (value[domain] == 'pending') { 
    console.log('result is not yet ready') 
    setTimeout(function() { 
    gandiApi.methodCall('domain.available', [gandiapikey, [domain]], 
    callback) 
    }, 700) 
    } 
    else { 
    console.dir(value) 
    } 


    // I want to return "value" from here and want to set in "res" paramameter of checkDomainAvaliablity function (Parent function). 
} 

Hinweis: Die Verwendung von Callbackfunktion ist erforderlich.

+0

Können Sie erklären, wie es sinnvoll ist, um das Ergebnis in 'res' zu speichern, wenn die äußere Funktion, die' bekam bestanden res' als Argument hat bereits seine Ausführung zu dem Zeitpunkt abgeschlossen der Rückruf wird aufgerufen? Warum nicht eine neue Variable verwenden? – trincot

+0

Ich muss etwas von get Methode als Ergebnis im JSON-Format zurückgeben. –

+0

Sie können von der get-Methode nichts zurückgeben, da sie bereits beim Aufruf des Callbacks zurückgegeben wurde. Vielleicht könnten Sie etwas Klarheit durch das Lesen von asynchronen Callback-Funktionen bekommen. Siehe auch: http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call – trincot

Antwort

0

Dank @trincot. Das Einfügen der Callback-Funktion in die Elternfunktion funktioniert einwandfrei.

exports.checkDomainAvaliablity = function (req, res) { 
 
    domain = req.params.domainAvaliablity 
 
    var callback = function (error, value) { 
 
    console.log("logging" + value + error) 
 
    if (value[domain] == 'pending') { 
 
     console.log('result is not yet ready') 
 
     setTimeout(function() { 
 
     gandiApi.methodCall('domain.available', [gandiapikey, [domain]], 
 
      callback) 
 
     }, 700) 
 
    } 
 
    else { 
 
     res.send(value); 
 
     console.dir(value) 
 
    } 
 
    
 
    } 
 

 
    gandiApi.methodCall('domain.available', [gandiapikey, [domain]], callback) 
 
    
 
};

Verwandte Themen