【发布时间】:2021-08-21 19:45:47
【问题描述】:
我学习 React JavaScript 并且有这个 Codesandbox 我不明白为什么没有显示错误
在watchProgress 中,catch 没有被触发,但它在 promise 中被触发,所以我做错了
function watchProgress(promArray) {
let progress = 0;
promArray.forEach(p => {
p.then(result => {
progress += 1;
const percentCorrect = (progress / promArray.length) * 100;
const math = Math.floor(percentCorrect);
setProgressValue(math);
console.log(`name ${result.name}`);
}).catch(err => {
console.log(`err ${err}`);
});
});
}
- 使用文件选择器选择文件
- 查看
err的日志 - 当我循环遍历所有日志时,日志显示承诺中的
error,但不显示err
更新
我尝试这样的事情,但我得到 TypeError: p.then is not a function
Promise.all(promArray)
.then(arr => {
arr.forEach(p => {
p.then(result => {
progress += 1;
const percentCorrect = (progress / promArray.length) * 100;
const math = Math.floor(percentCorrect);
// console.log(`setProgressValue ${math}`);
// console.log(`count ${progress}`);
setProgressValue(math);
console.log(`name ${result.name}`);
}).catch(err => {
console.log(`err ${err}`);
});
});
})
.catch(err => {
console.log(`err ${err}`);
});
【问题讨论】:
标签: javascript reactjs promise