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