2016-11-29 2 views
0

Ich versuche meine erste Alexa Skill zu schreiben und ich mache eine http Anfrage, die gut funktioniert, aber ich möchte das in eine Funktion einfügen, die ich aus meinem Hauptcode aufrufen kann.Aufruf von https.get mit Nodejs von einer Funktion?

Es funktioniert nicht, und ich bin mir nicht ganz sicher, wie ich die Antwort in eine Variable speichern kann, hier ist mein Code so weit:

function getValue(loc) { 
    var endpoint = 'URLHERE' 
    var something = "" 
    var body = "" 
    https.get(endpoint, (response) => { 
     response.on('data', (chunk) => { 
      body += chunk 
     }) 
     response.on('end',() => { 
      data = JSON.parse(body) 
      something = data.result.node.value; 
     }) 
    }) 
    return something; 
} 

Diese auf amazon und mit Lambda für die Funktionen Knoten mit Js

, die ich getValue('test') mit rufen

var result = getValue('test') 

es gerade nicht definiert.

Irgendwelche Ideen? Danke

Ich stelle mir vor, weil es einen asynchronen Aufruf ist es nicht den Wert aufgrund Rückruf festlegen, aber ich habe versucht, dies zu implementieren und kann es nicht zum Laufen bringen.

Dank

Antwort

1

Sie von Ihrer Funktion vor dem Rückruf von http.get Rückkehr Verhalten Synchron mit asynchronem Mischen.

Ihre Funktion ist also return ing something, die noch nicht definiert wurde.

Versuchen Sie stattdessen:

function getValue(loc,cb) { 
    let endpoint = 'URLHERE' 
    let something = "" 
    let body = "" 
    https.get(endpoint, (response) => { 
     response.on('data', (chunk) => { 
      body += chunk 
     }) 
     response.on('end',() => { 
      data = JSON.parse(body) 
      cb(data.result.node.value); 
     }) 
    }) 
} 

getValue(test,(result)=>{ 
    //do something with result here; 
}); 
+0

Sie so viel Dank! Nach stundenlangem Ausprobieren hat dieser Callback endlich geklickt! :) Danke xShirease – realtek

Verwandte Themen