我是nodejs的新手。我在示例1中没有看到回复,但是在示例2中看到了。为什么? Await在其他地方使用babel为我工作。
例1
let res = await request(url)
console.log(res);
console.log(res.body);
例2
request(url, function (error, res, body) {
if (!error && response.statusCode == 200) {
console.log(body)
}
});
Await在其他地方也可以使用,我正在使用babel和es6和es7功能所需的模块。例如,经过验证,await在squelize调用中有效。但这不适用于请求调用。为什么?
最佳答案
您只应在返回Promise的内容上使用await
。我绝对建议您在开始使用async
和await
之前阅读Promises。您可以通过在request
周围创建自己的包装函数以使其返回 promise 来使该示例工作,如下所示:
function doRequest(url) {
return new Promise(function (resolve, reject) {
request(url, function (error, res, body) {
if (!error && res.statusCode == 200) {
resolve(body);
} else {
reject(error);
}
});
});
}
// Usage:
async function main() {
let res = await doRequest(url);
console.log(res);
}
main();
编辑:或者,您可以研究使用a promise-based request library而不是常规请求模块。