内部变量值改变,事件处理程序在外​​部给出未定义

时间:2021-02-28 14:33:48

标签: javascript reactjs async-await dom-events

我正在尝试对 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 值并从事件处理程序外部访问它?

0 个答案:

没有答案