用Promise对象返回一个函数的值

我正在拧getWebContent函数,返回使用Promise网页的内容(我也使用请求模块)。

我想使用这个函数的方式是var content = getWebContent() ,这样contentvariables就包含了请求的网站的数据。 我开始如下:

var request = require('request') var getWebContent = function () { target = 'http://www.google.com'; var result = null; var get = function (url) { return new Promise(function (resolve, reject) { function reqCallback(err, res, body) { if (err) reject(err); else resolve(body); }; request(url, reqCallback); }); }; get(target).then(function (res) { result = res; console.log(res); }); return result; }; var goog = getWebContent(); console.log(goog) 

但是,此代码不起作用,因为该函数在Promise对象parsing之前返回结果variables,该variables为null。 你能不能让我知道我应该如何解决我的代码,使其按预期工作?

无论如何你需要使用Promise。 您不能在Javascript中使用asynchronous操作创build同步结果。

 var request = require('request') var getWebContent = function () { target = 'http://www.google.com'; var result = null; var get = function (url) { return new Promise(function (resolve, reject) { function reqCallback(err, res, body) { if (err) reject(err); else resolve(body); }; request(url, reqCallback); }); }; return get(target); }; var goog = getWebContent().then(function (res) { console.log(goog); });