在JavaScript中使用回调函数

时间:2019-06-12 17:22:55

标签: javascript

我想在javascript中从一个类调用一个函数。
此函数将另一个函数作为参数。
我收到语法错误,您知道它在哪里吗?
这是我收到的错误:

  

./ src / containers / NewNote.js     第53行:解析错误:意外的令牌,预期为“,”

51 |尝试{   52 | const附件= this.file

  

53 | ?等待s3Upload(this.file,this.inputValue,onUpdate()=> {        | ^     54 | this.setState({progress:progress});     55 | }     56 | )

我要调用的函数如下:

export async function s3Upload(file, header, onUpdate) {
  filename = 'toto';
  const stored = await Storage.vault.put(filename, file, {
    progressCallback(progress) {
      var percentage = (progress.loaded / progress.total * 100).toFixed(0);
      console.log(`Uploaded: ${percentage}%`, onUpdate);
      if (typeof onUpdate === "function") {
        try {
          onUpdate(percentage);
        } catch (e) {
          console.error("Error while computing update", e);
        }
      }
    },
    contentType: file.type
  });

  return stored.key;
}

调用函数如下:

try {
  const attachment = this.file ?
    await s3Upload(this.file, this.inputValue, onUpdate() => {
      this.setState({
        progress: progress
      });
    }) :
    null;

  await this.createNote({
    attachment,
    content: this.state.content
  });
  window.location.href = "/"
} catch (e) {
  alert(e);
  this.setState({
    isLoading: false
  });
}

this.state = {
  isLoading: null,
  content: "",
  progress: null
};

1 个答案:

答案 0 :(得分:1)

我看到的语法错误如下:

onUpdate() => {
  this.setState({
    progress: progress
  });
}

应该是:

(progress) => {
  this.setState({
    progress: progress
  });
}

这样做的原因是既没有命名参数,也没有命名参数arrow functions,这意味着在这种情况下无法命名箭头函数。
另外,您必须在箭头函数中添加参数,在这种情况下为progress,因为您需要在该函数的代码中使用该参数并将其传递给回调。