gpt4 book ai didi

javascript - 使用异步函数中的数据

转载 作者:太空宇宙 更新时间:2023-11-04 00:21:03 25 4
gpt4 key购买 nike

我对异步函数以及如何在函数返回结果后发送某些内容有疑问。这就是我想要实现的目标:

在 Node 中处理 GET 请求时,我读取了文件夹的内容,并返回该文件夹中的文件。接下来,我想循环访问该文件夹中每个文件的统计信息,仅加载在特定时间段内创建的文件,最后发送这些文件中的数据作为对请求的响应。它看起来像这样:

array = []

fs.readdir(path, function(err, items) {
items.forEach(function(item) {
fs.stat(path, function(err, stats) {
if (period check) {
array.push(data)
}
})
})
}

res.send(array)

这种方法最终会发送一个空数组,我已经研究了 Promises,这似乎是这里的解决方案,但我无法让它们在这种情况下工作。使用 fs.statSync 而不是 fs.stat 确实有效,但这大大降低了性能,而且感觉应该可以通过 Promises 实现,但我只是不知道如何实现。

有没有人能解决这个问题?

<小时/>

编辑:关于标记为重复的问题,我尝试先用那里的答案解决我的问题,但没有成功。我的问题有一些嵌套函数和循环,并且比那里给出的示例更复杂。

最佳答案

如果您更喜欢基于 Promise 的方法,请使用此方法:

var path = require('path')

fs.readdir(myPath, function(err, items) {
var array = [];

Promise.all(items.map(function(item) {
return new Promise(function(resolve, reject) {
fs.stat(path.resolve(myPath, item), function(err, stats) {
if (err) {
return reject(err)
}

if (/* period check */) {
array.push(data)
}

resolve()
})
})
})).then(function() {
res.send(array)
}).catch(function(error) {
// error handling
res.sendStatus(500)
})
}

关于javascript - 使用异步函数中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44570085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com