我如何在http请求后返回值?

时间:2018-08-16 21:41:37

标签: javascript node.js

var content = 'now - not content';

const getHtmlCode = function(){
  request(url, function(req, resp, body){
    content = body;
  });
  return content;
};

console.log(getHtmlCode()); // >> now - not content

在控制台中,我可以看到 /现在-没有内容/ ,因为对网站的请求需要2-3秒。

错误的解决方案::我可以在返回时添加setTimeout,但这是非常糟糕的方法。

我如何才能等到返回内容?

1 个答案:

答案 0 :(得分:1)

在您的情况下,请在回调中执行console.log()操作,即

var content = 'now - not content';

const getHtmlCode = function(){
    request(url, function(req, resp, body){
        console.log(body);
    });
};

getHtmlCode();

如果您希望使用Promise,可以尝试以下代码;

function getHtmlCode(){
    return new Promise ((resolve, reject)=>{
        request(url, function(req, resp, body){
            if(!body) reject({message: "No body"});
            resolve(message);
        });
    });
}

getHtmlCode().then((body)=>{
    console.log(body)
}).catch(err=>{
    console.log(err);
})