我想在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
};
答案 0 :(得分:1)
我看到的语法错误如下:
onUpdate() => {
this.setState({
progress: progress
});
}
应该是:
(progress) => {
this.setState({
progress: progress
});
}
这样做的原因是既没有命名参数,也没有命名参数arrow functions,这意味着在这种情况下无法命名箭头函数。
另外,您必须在箭头函数中添加参数,在这种情况下为progress
,因为您需要在该函数的代码中使用该参数并将其传递给回调。