【问题标题】:Pokemon API, Promises javascript get data inside of array jsonPokemon API,Promises javascript 获取数组 json 中的数据
【发布时间】:2015-06-06 00:31:01
【问题描述】:

我一直在努力制作一个小应用程序来从http://pokeapi.co/ 的 pokemon api 获取图像和信息,我正在使用 Promise 来学习课程,但是我可以得到一个组(例如:水类型),它给了我 78 个对象,每个都有一个resource_uri,它是给我每个口袋妖怪信息的数据。 到现在为止,我已经做了这个,我可以得到所有的对象,但是,现在我怎样才能让每个对象推送到 console.log(或稍后使用它们)所有 78 个口袋妖怪以及每个对象的数据。 到目前为止我的代码是这样的>

var $ = window.jQuery
var base = 'http://pokeapi.co/api/v1/egg/'
Promise.resolve($.get(base + '2'))
  .then((results) =>
.then((results) => {
  var pokechara = results.pokemon
  var basechara = 'http://pokeapi.co'
  var promises = []
  for (let chara of pokechara){
    var pokech = pokechara[i]
'${something}'
    var pokechurl = basechara + pokechara[0].resource_uri
    promises.push(Promise.resolve($.get(pokechurl)))
  }
  debugger
  return Promise.all(promises)
})
.then((poke) => {
    console.log(poke)
})
.catch((err) => {
  debugger
})

我真的很想用 yugioh.wikia 的 api 做点什么,但我不知道如何才能工作,因为交叉服务器或标头的问题。要查看我正在做的事情的预览,您可以在http://www.kengreg.com/yugiohapp/

提前致谢

【问题讨论】:

  • 能否请您提供更好的示例代码?这是无效的 javascript,除了抛出错误不会做任何事情。
  • 嗨对不起,我正在研究它,但这是工作代码,只需要 jquery: var $ = window.jQuery var base = 'pokeapi.co/api/v1/egg' Promise.resolve($ .get(base + '2')) .then((results) => { var pokechara = results.pokemon var basechara = 'pokeapi.co' var promises = [] for (var i in pokechara){ var pokech = pokechara [i] var pokechurl = basechara + pokechara[0].resource_uri promises.push(Promise.resolve($.get(pokechurl))) } 调试器返回 Promise.all(promises) }) .then((poke) => { console.log(poke) }) .catch((err) => { debugger })

标签: javascript arrays json api


【解决方案1】:

实际上,在您回复Alex的代码中,您用来调用api的字符串变量是唯一错误的,需要开头的'http://'部分。除此之外,您的代码运行良好。

var $ = window.jQuery;
var base = 'http://pokeapi.co/api/v1/egg/';
Promise.resolve($.get(base + '2'))
    .then((results) => { 
        var pokechara = results.pokemon;
        var basechara = 'http://pokeapi.co/'; 
        var promises = [];
        for (var i in pokechara){ 
            var pokech = pokechara[i]; 
            var pokechurl = basechara + pokechara[0].resource_uri;
            promises.push(Promise.resolve($.get(pokechurl)));
        } 
        debugger 
        return Promise.all(promises); 
    }) 
    .then((poke) => { 
        debugger;
        console.log(poke); 
    }) 
    .catch((err) => { debugger })

我离开了调试器,这样你就可以检查 Promise 的结果。最后的 poke 变量应该有你想要的 objects 数组。

【讨论】:

  • 谢谢你的回答,但我似乎只得到了组的数组。所有的诺言都是被称为“水”的团体的对象。我想做的目标是从该数组中的每个对象中获取数据。在该数组中有 78 个对象,每个对象都有名称和 resource_uri,我想列出并获取每个对象的资源 uri,以便稍后获取每个对象的图像(sprite)。如何做到这一点?
猜你喜欢
  • 2022-01-20
  • 1970-01-01
  • 2023-02-25
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多