我正在尝试向URL发出一个请求,然后我从中获取图像数据。现在我需要做的是:
我在做什么?
var data;
request.get(URL, function (error, response, body) { //1
if (!error && response.statusCode == 200) {
data = "data:"
+ response.headers["content-type"]
+ ";base64,"
+ new Buffer(body).toString('base64');
}
});
console.log(data) //2
问题?
现在我需要首先发生请求,然后转到console.log,这样我的数据就不会被定义,然后我可以将它推送到我的字典中。但是现在它从1发出一个请求,然后它移动到2,这是console.log,然后它给出错误。那么我能做什么呢?
注意:我不想在该函数中添加console.log,因为我无法将所有代码放在请求函数中。
答案 0 :(得分:1)
您可以使用Async/Await
Async / Await是一个关键字,它会告诉您的代码等待函数的结果继续。这叫做Asynchronous code
function getData() {
request.get(URL, function (error, response, body) { //1
if (!error && response.statusCode == 200) {
var data = "data:"
+ response.headers["content-type"]
+ ";base64,"
+ new Buffer(body).toString('base64');
return data
}
});
}
然后在功能中,您需要治疗数据
async function main() {
var myData = await getData();
... Your treatment of data
}
您可以在javascript here
中获得有关同步/异步代码的更多信息