gpt4 book ai didi

node.js - 在 NodeJs 8.* 中,如何在 http.get 上应用 Async/Await?

转载 作者:太空宇宙 更新时间:2023-11-03 22:26:36 25 4
gpt4 key购买 nike

下面的代码从指定的url异步获取结果,我想在收到数据后从getData方法返回parsed变量,在nodejs版本中使用async/await 8.*(无回调函数)。

function getData(v, r) {
var path = 'http://some.url.com';
var parsed = "";
http.get({
path: path
}, function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
parsed = JSON.parse(body);
// now I would like to return parsed from this function without making use of callback functions, and make use of async/await;
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
return parsed;
};

非常感谢任何帮助。

最佳答案

首先,我建议使用 npm 包 request 来处理 http 获取。

1.) 使用 Promise(await 在后台执行此操作)

function getData(v, r) {
var path = 'http://some.url.com';
var parsed = '';
return new Promise((resolve, reject) => {
http.get({
path: path
}, function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
parsed = JSON.parse(body);
resolve(parsed);
});
}).on('error', function(e) {
reject(e.message);
});
});
};

那么用法就是

getData(v, r)
.then(success => console.log(success))
.catch(error => console.log(error))

2.) 或回调 您可以将回调作为参数传递给 getData(即 getData(v, r, callback) )然后在函数体内通过callback(parsed)callback(error_msg)调用它。

那么用法是:

getData(v, r, result=>console.log(result))

或者更容易阅读:

function callback(res) { 
console.log(res)
}
getData(v, r, callback)

关于node.js - 在 NodeJs 8.* 中,如何在 http.get 上应用 Async/Await?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45341538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com