2016-08-24 32 views
0

在我的第一個腳本中,我執行了一個從網頁獲取HTML的函數。我想在另一個腳本中使用這個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的代碼。

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