Javascript 函数不返回?
所以我不确定为什么这段代码不起作用。我拥有的是组件接受的文件类型数组。我尝试迭代该数组,并检查正在上载的文件是否属于这些类型之一。如果不是,则IJavascript 函数不返回?,javascript,reactjs,Javascript,Reactjs,所以我不确定为什么这段代码不起作用。我拥有的是组件接受的文件类型数组。我尝试迭代该数组,并检查正在上载的文件是否属于这些类型之一。如果不是,则I返回。由于某种原因,下面的代码acceptedFormats.forEach继续运行。如果我console.logaudioType和file.type我会得到一个无效的。那么,它不应该又回来了吗?谢谢 类上载扩展了React.Component{ 状态={ 百分比:0, 上传:假 } handleUpload=(e)=>{ if(this.state
返回代码>。由于某种原因,下面的代码acceptedFormats.forEach
继续运行。如果我console.log
audioType
和file.type
我会得到一个无效的。那么,它不应该又回来了吗?谢谢
类上载扩展了React.Component{
状态={
百分比:0,
上传:假
}
handleUpload=(e)=>{
if(this.state.uploading){
回来
}
const file=e.target.files[0];
const acceptedFormats=[“音频/wav”、“音频/mp3”、“音频/m4a”];
//TODO:找出这不起作用的原因
acceptedFormats.forEach((audioType)=>{
console.log(audioType);
console.log(file.type);
if(audioType!==file.type){
console.log('INVALID');
回来
}
})
const audioRef=storageRef.child('audio/'+file.name);
const task=audioRef.put(文件);
任务上('state_changed',函数(快照){
const progress=(snapshot.bytesttransfered/snapshot.totalBytes)*100;
log('Upload is'+progress+'%done');
此.setState(()=>({
百分比:进展
}))
}.bind(此)、函数(错误){
},函数(){
const downloadURL=task.snapshot.downloadURL;
const fileName=task.snapshot.metadata.name;
让songName=removeFileExtension(file.name);
songName.replace(/\./g',);
db.ref(`users/${this.props.uid}/uploadedSongs/`).push({
下载网址:,
文件名,
歌名,
}).然后(()=>{
这是我的国家({
百分比:0,
上传:假
})
Alert.success(`Upload successful`{
位置:'右上',
效果:“幻灯片”,
超时:3000
})
})
}.约束(这个);
}
render(){
返回(
{this.state.uploading?“上传”:“上传歌曲”}
this.handleUpload(e)}disabled={this.state.uploading?true:false}/>
接受的格式:.wav、.mp3、.m4a
);
}
}
ReactDOM.render(,document.querySelector('#u')代码>
示例上载
返回内的。forEach()
回调不会阻止.forEach()
回调范围外的其他代码运行。您可以使用.some()
返回一个布尔值true
或false
和一个if
条件和语句,以返回如果从调用返回true
if (acceptedFormats.some(audioType => {
console.log(audioType);
console.log(file.type);
return audioType !== file.type
})) {
console.log('INVALID');
return;
}
我不会这样说:“如果我对audioType和file.type进行console.log,我会得到一个无效的值。”记录这些内容不会返回“INVALID”。你是想说你进入了if(audioType!==file.type)
块吗?这是纯Javascript吗?Javascript是否像您现在所做的那样接受关键字扩展
?你想返回一个值还是只是停止进程?我清理了它,使其可以运行…这显然是React.js,所以我添加了tagmable replicate