2016-11-29 4 views
0

私は最初のAlexaスキルを書こうとしていますが、うまく動作するhttpリクエストを行っていますが、これをメインコードから呼び出せる関数にラップしたいと思います。関数からnodejsを使用してhttps.getを呼び出しますか?

それが動作していないと私は変数に応答を格納する方法かなりわからない、ここに私のコードは、これまでのところです:

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; 
} 

これはアマゾンにあり、ノードを使用して機能するためにラムダを使用して私はそれだけで未定義返さ

var result = getValue('test') 

を使用してgetValue('test')を呼び出すの.js

アイデアはありますか?ありがとう

私はその非同期呼び出しは、コールバックのために値を設定していないが、私はこれを実装しようとし、それを動作させることができないと思います。

おかげ

答えて

1

あなたは非同期動作と同期を混合、http.getのコールバックの前に、あなたの関数から戻っています。

あなたの機能はまだ定義されていないreturn ing somethingです。

は、代わりにこれを試してみてください:

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

はありがとうございました!このコールバックを試してから数時間後についにクリックされました! :)ありがとうxShirease – realtek

関連する問題