我正在尝试对 Javascript 和 React 中的 async/await 和事件处理程序更有信心。
更准确地说,我有这个功能:
uploadFile = async (file) => {
const { ipfs } = this;
this.file = file;
let buffer;
var fileAdded;
let reader = new window.FileReader();
reader.readAsArrayBuffer(file);
reader.onloadend = async () => {
buffer = await Buffer.from(reader.result)
fileAdded = await ipfs.add({ content: buffer });
}
return fileAdedd.cid;
}
运行此函数后,我得到:
<块引用>未处理的拒绝(TypeError):无法读取未定义的属性“cid”
意味着 fileAdded
实际上没有被修改。
显然我已经尝试在事件处理程序中移动 return 语句并且它工作但我需要它在外面,因为我从另一个使用 await
调用这个函数,并且在处理程序中返回它不会等待要返回的值。我缺少什么理论概念?如何修改 fileAdded
值并从事件处理程序外部访问它?