【发布时间】:2018-04-15 03:56:39
【问题描述】:
编辑:这似乎是一个同步问题,因为我没有正确理解承诺。我假设“.then”等待承诺解决。显然情况并非如此。
我遇到了一个我从未见过的奇怪错误。
我有这段代码,它在 Chrome 控制台中产生以下输出。
显然它是一个数组,它有数据和长度,但是当我打印长度属性时它为零。 (我也不能用 map 遍历它)
我真的很困惑,任何帮助将不胜感激。
const readFile = (file) => (
new Promise((resolve) => {
const fr = new FileReader();
fr.onload = () => {
resolve(fr.result);
};
fr.readAsText(file);
})
);
const readFiles = (files) => {
const readFiles = [];
files.forEach((file) => (readFile(file)).then((data) => readFiles.push({name: file.name, data })));
return readFiles;
};
const scenes = readFiles(...grabbed from file picker dialog...)
console.log('scenes: ', ui.value.scenes);
console.log('length: ', ui.value.scenes.length);
【问题讨论】:
-
可能是 ui.value.scenes 在日志语句后更新
-
scenes是否有可能被异步填充? -
这不足以识别问题。请edit 提问并附上minimal reproducible example。
-
请给我们更多代码
-
你读过
[]旁边的小i图标吗?
标签: javascript arrays