【发布时间】:2021-02-02 17:41:28
【问题描述】:
reader.onloadend 调用异步函数 addData 并且 reader.onloadend 处于循环中。
const uploadFiles = () => {
console.log(acceptedFiles)
setLoading(true)
console.log(loading)
let i = 0
let l = acceptedFiles.length
for (i = 0; i < l; i++) {
let file = acceptedFiles[i]
const reader = new window.FileReader()
reader.readAsArrayBuffer(file)
reader.onloadend = () => {
let buffer = Buffer(reader.result)
console.log(buffer)
addData(file.path, buffer)
}
}
}
这是我的异步函数 addData
async function addData(name, buffer) {
const file = await myfunction()
}
我想在调用循环中的所有异步 addData 之后调用 setLoading(false)。 onClick 函数不起作用,当我在所有异步函数完成之前单击按钮时加载设置为 false。
const [loading, setLoading] = useState(false)
<button onClick={() => {
uploadFiles()
setLoading(false)
}}
disabled={loading}
>
【问题讨论】:
-
为什么不在
uploadFiles内的for循环之后写setLoading(false) -
@ZainUlAbideen 在读取所有文件之前将其设置为 false。
标签: javascript reactjs