2016-08-24 14 views
0

私の最初のスクリプトでは、WebページからHTMLを受け取る関数を実行します。私は世界的な、しかし無駄に変数を作ってみた...リクエストによって作られた変数をnode.jsにエクスポートする方法

var html; 
exports.html = html; 

exports.makeRequest = function makeRequest(url){ 
     request({ 
     url: url, 
     auth: { 
      user: '*****', 
      pass: '*****' 
     }, 
     rejectUnauthorized: false, 
    }, function (error, response, body) { 
     if (!error && response.statusCode === 200) { 
      html = body.toString(); 
      exports.html = html; 
     } 
    }); 
} 

を私は別のスクリプトでは、このHTMLを使用するようにしたいのですが、戻り値は常に未定義戻ってきます。

これは、私がhtmlを呼び出すために使用しているコードです。

var myRequests = require('./Request'); 

console.log(myRequests.makeRequest(url)) 

console.log(myRequests.html); 
+0

非同期メソッドの通常の問題。コールバックや約束を読んで問題を解決してください。 – Sirko

答えて

2

要求の送信は非同期操作です。つまり、リクエストが終了してコールバックを介してデータを取得するまで待つ必要があります。

exports.makeRequest = function makeRequest(url, cb) { 
    request({ 
     url: url, 
     auth: { 
     user: '*****', 
     pass: '*****' 
     }, 
     rejectUnauthorized: false, 
    }, function(error, response, body) { 
     if (error) { 
     return cb(er); 
     } 
     if (response.statusCode !== 200) { 
     return cb(new Error('Request failed with code ' + response.statusCode)); 
     } 
     cb(null, body.toString()); 
    }); 
    } 
    //usage 
var myRequests = require('./Request'); 

myRequests.makeRequest(url, function(er, html) { 
    if (er) { 
    return console.log(er); 
    } 
    console.log(html); 
}); 
関連する問題