【发布时间】:2018-09-30 11:42:46
【问题描述】:
首先我很抱歉提出关于 async/await 的问题,因为我知道有很多答案,但是在阅读了很多答案之后,我还没有找到一个可行的解决方案。
有一个搜索函数 flickr.js 可以在 Flickr API 中搜索查询,但该函数返回 Promise,但我需要一个对象 {查询,图像:[{photo1}, {photo2}, {photo3}]}
flickr.js 函数
window.MODULES.Flickr = async query => {
const opts = {
api_key: 'API_KEY'
};
const photos = await window.fetch(
`https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=${
opts.api_key
}&text=${query}&format=json&nojsoncallback=1
`
);
const data = await photos.json();
const pictures = data.photos.photo;
const images = [];
pictures.forEach(picture => {
return images.push({
id: picture.id,
url: `https://farm${picture.farm}.staticflickr.com/${picture.server}/${
picture.id
}_${picture.secret}_s.jpg`,
title: picture.title
});
});
return {
query,
images
};
};
它是从
ImageFinder.js
function() {
let ImageFinder = (window.CLASSES.ImageFinder = function() {});
ImageFinder.prototype.search = (query, moduleId) => {
switch (moduleId) {
case 'static':
return window.MODULES.Static(query);
case 'flickr':
return window.MODULES.Flickr(query); // Need to return object { query, images : [{photo1}, {photo2}, {photo3}] }
default:
throw Error('Search module not found.');
}
};
});
【问题讨论】:
-
await window.MODULES.Flickr(query) -
@str - 这将要求代码位于
async函数内
标签: javascript