javascript - 如何使用 Javascript 更改 API 响应
问题描述
我编写了这个小应用程序,它接收一组星球大战角色并以数组的形式返回图像。
const app = require('express')();
const fetch = require('node-fetch');
const imageSearch = require('image-search-google');
const bodyParser = require('body-parser')
var urlencodedParser = bodyParser.urlencoded({ extended: true })
app.use(bodyParser.json())
const options = {page:1};
const getImages = (keywords) =>
Promise.all(keywords.map(keyword => client.search(`${keyword} Wookieepedia`, options)))
.then(data => firstResult = data.map(result => result[0].url));
const fun = async () => {
const res = await getImages(['yoda' , 'luke skywalker' , 'darth vader']);
console.log(res);
}
fun()
上述代码的结果如下所示:
[ 'https://vignette.wikia.nocookie.net/starwars/images/d/d6/Yoda_SWSB.png/revision/latest?cb=20150206140125',
'https://vignette.wikia.nocookie.net/starwars/images/d/d9/Luke-rotjpromo.jpg/revision/latest?cb=20091030151422',
'https://vignette.wikia.nocookie.net/starwars/images/a/a3/ANOVOS_Darth_Vader_1.png/revision/latest?cb=20150128225029' ]
但我想要一个结果,我可以知道哪个图像属于哪个关键字。也许是这样的格式或类似的格式:
[{<keyword> : <url>}]
我试过这个:
const getImages = (keywords) =>
Promise.all(keywords.map(keyword => {return { [keyword] : [client.search(`${keyword} Wookieepedia`, options)]} } ))
.then(data => firstResult = data.map(result => result));
const fun = async () => {
const res = await getImages(['yoda' , 'luke skywalker' , 'darth vader']);
console.log(res);
}
fun()
结果很接近但不好:
[ { yoda: [ [Promise] ] },
{ 'luke skywalker': [ [Promise] ] },
{ 'darth vader': [ [Promise] ] } ]
解决方案
client.search
返回一个承诺。如果您使映射函数异步,则可以在映射函数中等待。
const getImages = (keywords) =>
Promise.all(keywords.map(async keyword => {
return {[keyword]: await client.search(`${keyword} Wookieepedia`, options)}
}));
推荐阅读
- unity3d - 如何使用 Google Cloud Platform 为虚拟 Unity/C# 开发团队设置多个环境?
- timestamp - 如何验证邮递员范围内的时间戳?
- python - 文件中的多处理读取行
- caddy - Caddyfile 重写 /foo /bar#locationOnPage
- vue.js - Nuxt - 是否可以检查用户是否从 SSR 登录?
- firebase - 如何过滤地图/Firestore Flutter
- json - 将 log4j2 JsonLayout 输出转换为另一个布局
- node.js - 如何在 USDA API 中输入份量?
- java - 如何更改 Vert.x (java) 中的默认会话超时
- html - 如何从 div 父级中选择第一个子级 div