再次关于asynchronous/在JavaScript中等待
我现在的function如下所示:
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; }
我不知道,如何填充数值后返回数组。 与callback它工作正常,但我想用asynchronous/等待方法正确的方式。 谢谢你的帮助。
创build方法返回promise的request
并使用该方法await
requestPromise = () => { return new Promise(function(resolve, reject) { 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'); reject(); } else if (body.meta.status === "ZERO_RESULTS") { console.log('Uable to find that address.'); reject(); } 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"); } }); }); resolve(images_array) } }); }); }
var GetImages = async() => { try { images = await requestPromise(); return images; } catch(e){return [];} }