admin管理员组文章数量:815140
无法获取路由文件以等待所有api调用完成
我尝试了标准的JS计时器,尝试了异步功能,尝试了使用计数器和if语句,但是对我来说没有任何作用;从技术上讲,这里完成了21个api调用,我需要我的程序才能工作。我的呼叫在控制台日志中工作,但它想在将movieData填满之前将数据发送回该页面。现在,它只是将一个空数组推入页面。
我到处都是这个网站,无济于事。
const router = require("express").Router()
const axios = require('axios')
require("dotenv").config()
// const controller = require("../controllers/userController")
function movieSearch(req, res) {
const tmdbApiKey = process.env.tmdbApiKey
let searchQuery = req.params.search
const url = `;q=${searchQuery}`
axios.get(url)
.then(response => {
let recommendations = response.data.Similar.Results
console.log("Recommendations: ", recommendations)
let movieData = []
for (let i = 0; i < recommendations.length; i++) {
const singleUrl = `=${tmdbApiKey}&language=en-US&page=1&query=${recommendations[i].Name}`
axios.get(singleUrl)
.then(singleResponse => {
let single = singleResponse.data.results
for (let x = 0; x < single.length; x++) {
if (single[x].title.toLowerCase() === recommendations[i].Name.toLowerCase()) {
console.log("Single[i]: ", single[x])
movieData.push(single[x])
break
}
}
})
.catch(err => {
console.log(err)
})
}
res.send(movieData) // I still have to find someway to tell it to wait to send the data
})
.catch(err => {
console.log(err)
})
}
function showSearch(req, res) {
let searchQuery = req.params.search
const url = `;q=${searchQuery}`
axios.get(url)
.then(response => {
let recommendations = response.data.Similar.Results
res.send(recommendations)
})
.catch(err => {
console.log(err)
})
}
router.get("/api/movie/:search", movieSearch)
router.get("/api/tv/:search", showSearch)
module.exports = router
回答如下:您需要Promise.all()
。
function movieSearch(req, res) {
//
//
let movieData = []
const promiseArr = []
for (let i = 0; i < recommendations.length; i++) {
const singleUrl = `https://api.themoviedb/3/search/movie?api_key=${tmdbApiKey}&language=en-US&page=1&query=${recommendations[i].Name}`
promiseArr.push(axios.get(singleUrl))
}// for loop
Promise.all(promiseArr).then(result => {});// Array of result of each API request
// Do further operation here
}
Promise.all()
问题,如果任何请求失败,处理将失败,并且没有结果。您可以尝试Promise.allSettled()
本文标签: 无法获取路由文件以等待所有api调用完成
版权声明:本文标题:无法获取路由文件以等待所有api调用完成 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1715208426a822530.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
全部评论 0
暂无评论
发表评论