【发布时间】:2021-05-21 22:58:14
【问题描述】:
我正在编写一个进行 api 调用的服务器路由。
我需要发出两个不同的提取请求,因为我需要更多信息,这些信息将在第一次提取中出现。
问题是我声明了一个超出承诺范围的变量,并且由于某种原因,我的 res.send 没有等待数组变满。
我需要迭代直到结果 9(我不能使用 DogApi 的预定义过滤器来显示九个结果!)
if (req.query.name) {
var myRes = [];
fetch(`https://api.thedogapi.com/v1/breeds/search?name=${req.query.name}&apikey=${key}`)
.then(r => r.json())
.then( data => {
for (let i = 0; i < 8 && i < data.length; i++) {
fetch(`https://api.thedogapi.com/v1/images/${data[i].reference_image_id
}`)
.then(r => r.json())
.then(datos => {
myRes.push({ ...data[i], ...datos });
})
}
})
.then(res.send(myRes))
}
感谢您的帮助!
【问题讨论】:
-
使用 PromiseAll。类似于this
-
现在是使用
async function和await或其他Promise 结构的好时机。 -
第二个
.then()中也没有return 语句,第三个.then()会产生语法错误。 -
@WeiYan 这很有帮助,但我真的不知道如何在我的代码中实现它..
-
重新打开,因为这个问题实际上并不是关于从函数返回值。它更多的是关于管理异步操作循环和其他异步编码错误。
标签: javascript express promise fetch