1
我的功能看起来像现在这样:再次约异步/等待在JavaScript
var GetImages = async() => {
var images_array = [];
await request ({
url: `https://api.tumblr.com/v2/blog/nameblog/posts?api_key=${process.env.TUMBLR_KEY}&type=photo`,
json: true
}, (error, response, body) => {
if(error){
console.log('Unable to connect');
}else if(body.meta.status === "ZERO_RESULTS"){
console.log('Uable to find that address.');
}else if(body.meta.status === 200){
body.response.posts.forEach(function(obj) {
obj.photos.forEach(function(photo) {
if(photo.original_size.width>photo.original_size.height){
images_array.push(photo.original_size.url);
console.log("dawdaw");
}
});
});
//callback(images_array);
}
});
return images_array;
}
我不知道,如何返回我的数组后,我会和值填充它。回调它可以正常工作,但我想用异步/等待正确的方式执行。谢谢你的帮助。
您需要_promisify_'request'或使用'请求promise'模块。 – alexmac
首先,您需要使用'request'这样的'request'版本来返回一个promise,因为'await'只使用promise来做异步的事情。然后,您需要从异步函数中返回一个承诺,以便其调用者能够使用其结果。你不能用'await'以某种方式同步返回一个异步结果。 “等待”会带来一些魔力,但不是那种魔力。你的'GetImages()'函数也需要返回一个承诺。 – jfriend00