为什么这两个异步读取会互相阻塞?



目前我正试图在网站加载过程开始时进行两次抓取。我通过sftp获取我的数据,如果我单独获取两个端点,它的工作。但如果我试图同时得到这两者,我的形象是"永远"的。在网络选项卡中抓取,但没有显示。所以似乎他们互相阻止,但我不明白这一点,因为他们是异步工作?

这是我的主页,图片应该在这里加载:

useEffect(() => {
fetch(`${URLS.apiUrl}/image/label`)
.then(async (x) => {
let resp = await x.json()
if (resp !== undefined && resp.id === undefined && resp.data === undefined) {
setNoImageAvailable(true)
return
}
setImage(resp.data)
})
}, [reRenderValue])

现在我做了另一个组件来更好地概述,它链接到我的主页并使用自己的useEffect(我已经尝试过在一个useEffect中使用两个抓取,但这也不起作用)

useEffect(() => {
fetch(`${URLS.apiUrl}/files/gaugeNames`)
.then(async (v) => {
try {
let resp = (await v.json())
setFilenames(resp)
} catch {
console.log('Could not parse response')
}
})
}, [reload])

正如我已经说过的,我使用sftp从ftp获取我的数据,这就是我的方式:

async getGaugeFiles(req, res, next){
// res.json([]);
//Connect FTP Client
await SFTPClient.connect()
//Get all Gauge files from host
let fileList = (await SFTPClient.listFiles(environment.FTP_PATH_GAUGE))?.map(f => `gauge_${f.name}`)
//Disconnect FTP Clients
await SFTPClient.disconnect()
return res.json(fileList)
}

我已经检查了返回,它返回给我正确的fileList,所以它工作得很好。

现在是我的问题,我也得到一个错误在我的后端,如果我试图获取两个路由。它显示"下载文件{FILENAME}错误:错误:_get:没有响应从服务器"它还告诉我"ERR_GENERIC_CLIENT"这是通过我的最后一个函数,我在这里加载文件

async download(file, path) {
try {
return await this.client.get(`${path}/${file}`)
} catch (err) {
console.log(`Error downloading file ${file}:`, err)
return null
}
}

修复了计时器。与1秒的计时器我让第一次取回通过,之后我可以取回其他的东西。这不是最好的解决方案,但目前是唯一可行的。

最新更新