我如何等待一个nodejs请求-承诺对象



我试图从函数返回http请求的结果,并认为请求承诺应该在等待后返回。我显然没有这个权利。我得到"未定义"从函数返回。

var s = getUrl();
console.log('result: ' + s)
function getUrl() {
var rp = require('request-promise');
var url = 'http://myserver.com?param=xxx';
rp(url)
.then(function (data) {
return data;
})
.catch(function (err) {
console.log(err);
});
}

我如何等待调用,以便getUrl返回数据?

编辑:在Kevin的评论之后。我试图把它放入一个模块并调用它,但它返回[object Promise]。
function getUrl(url, params) {
var rp = require('request-promise');
return rp(url + '?' + params)
.then(function (data) {
return data;
})
.catch(function (err) {
console.log(err);
});
}

async function getUpdate(o) {
var url = 'http://myserver.com';
var params = 'param=xxx';
var s = await getUrl(url, params);
return s;
}
exports.askVelo = (o) => {
var sRtn = '';

console.log(o.code);
switch (o.code) {
case 'g':
sRtn = getUpdate(o);
break;
}
console.log('heres rtn: ' + sRtn);  // sRtn is [object Promise]
return sRtn;
}

getuupdate现在只是返回[object Promise]…为什么现在不起作用了?

我真的需要以同步方式获取数据,所以我最终放弃了,使用了sync-request,跳过了所有的await/promise。

sr = require('sync-request');
var url = 'http://myserver';
var qstring = 'param=xxx';
var res = sr('GET', url + '?' + qstring);
var str = res.body.toString();

最新更新