【发布时间】:2018-11-26 04:19:43
【问题描述】:
我需要从一个 URL(其中包含 JSON 中的信息)中获取一些关于多个对象的信息。 所以我写道:
static fetchObj(){
fetch("http://localhost:1337/objects")
.then(callback => {
return callback.json();
})
.then(data => {
console.log(data);
});
}
在这里我可以检索我需要的东西并安慰他们以确保确定。
然后我必须在另一个按 ID 查找这些对象的函数中使用这些数据:
static fetchObjById(id) {
MyClass.fetchObj()
.then(
for(var i=0; i<data.id.length; i++){
if(data[i].id == id)
console.log("found");
else
console.log("not found");
}
}
但它根本不起作用..我尝试了几种方法但没有..希望有人可以帮助我:)
【问题讨论】:
-
不要只是
log和data中的fetchObj而是返回它 - 以及return函数的承诺。在fetchObjById中,您需要将一个以data作为参数的回调函数传递给then- 传递循环不是有效的语法 -
你的语法错误。传递给
then()的参数必须是函数。 -
你应该像
MyClass.fetchObj().then(data => {for....}一样拥抱你的循环 -
现在我写了这个:
static fetchObj(){ return fetch("http://localhost:1337/objects") .then(callback => { return callback.json(); }) .then(data => { return data; }); } static fetctObjById(id) { MyClass.fetchObj() .then( data => { data.forEach(d => { if(d.id == id){ console.log("found: "+ d.name); } else console.log("not found"); }) }) }它似乎有效,但我不知道它是否正确。我添加了一些回报..
标签: javascript json ecmascript-6 promise fetch-api