2017-11-13 4 views
0

私はnode-rest-clientまたはリクエストライブラリを使ってnode.jsで作業しており、サービスへのAPIコールを行います。 letとscopingを使用して応答をキャプチャすることができますが、要求を受け取ることしかできません。リクエストのレスポンスに変数を設定する

次のコードでは、コンソールログnewrequestを使用すると、関数内にリクエストデータが記録され、 logging info.check.id適切なデータを記録します。

var request = require( 'request');この時点で

var options = { 
    url: 'https://api.pingdom.com/api/2.1/checks/******', 
    headers: { 
    "App-Key": "******************" 
    } 
}; 

    function callback(error, response, body) { 
    if (!error && response.statusCode == 200) { 
     var info = JSON.parse(body); 
    // console.log(info); 
    console.log(info.check.id) 
    // console.log(response.info); 
    } 
    else { 
    //  console.log(body); 
    } 
    } 

let newrequest = request(options, callback).auth('********', '********'); 

console.log(newrequest); 
+0

コールバックから 'info'を返します – kgangadhar

+0

関数を閉じる前にifステートメントまたはifステートメントのいずれかにリターン情報や基本文字列を入れても、newrequestのロギング結果は変更されません。 – rraver

答えて

0

console.log(newrequest);

コールが実際にはまだなされていないため、要求はまだ回答がありません。ノードの非同期性のため、要求はconsole.log(newrequest);の行の後にのみ行われます。あなたはコールバックの応答にしかアクセスすることができません。実際、コールバックの全ポイントは応答を処理できるようになっています。

+0

それは私がコールバックとリクエストがまだ処理されていないことに対処しなければならないと思ったことですが、データを元に戻す最良の方法は何ですか? – rraver

+0

>何がデータを元に戻す最良の方法ですか。 コールバックはどこでデータを返すべきですか?私は、HTTPリクエストに応答する必要があるAPIとします。その場合、ルートハンドラを定義する場所に完全なコードを投稿できますか? –