我是nodejs的新手。我在ex1中没有看到响应,但是我在ex2中看到了。为什么?在其他地方,使用babel,await对我很有效。
实施例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调用中工作,我验证过了。但是它不能在request调用中工作。为什么?
5条答案
按热度按时间llew8vvj1#
你应该只使用
await
来返回一个承诺。我强烈建议你在开始使用async
和await
之前先阅读一下承诺。你可以通过在request
周围创建你自己的 Package 函数来让它返回一个承诺,就像这样:编辑:或者,您可以考虑使用基于承诺的请求库,而不是常规的请求模块。
hgc7kmma2#
request
为require('./await-request')
8ftvxx2r3#
正如@saadq所说,你只能“等待”函数返回Promise。
我喜欢使用Node.js的
util
包来承诺一个带回调的函数,所以util
+request
可以这样使用:演示:https://runkit.com/mhmtztmr/node-js-request-with-async-await
vpfxa7rd4#
尝试使用以下NPM包
node-fetch
希望能成功。
2guxujil5#
我需要在response.json()中添加await,因为response.json()是promise