Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将期票连成一个函数?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何将期票连成一个函数?

Javascript 如何将期票连成一个函数?,javascript,reactjs,Javascript,Reactjs,我目前正在学习承诺。为此,我编写了一个音频文件验证程序,用于检查文件的可用性、长度、大小和持续时间。如果一切正常,验证程序将返回true(如果不是false)。我使用四个承诺来管理异步数据的处理。但是,当我使用这四个承诺来检查文件的整体验证时。函数返回undefined,不返回预期的true或false状态 export function validateAudioFile (Spec, AudioFile) { const fileAndSpecsAvailable = () =>

我目前正在学习承诺。为此,我编写了一个音频文件验证程序,用于检查文件的可用性、长度、大小和持续时间。如果一切正常,验证程序将返回true(如果不是false)。我使用四个承诺来管理异步数据的处理。但是,当我使用这四个承诺来检查文件的整体验证时。函数返回undefined,不返回预期的true或false状态

export function validateAudioFile (Spec, AudioFile) {


  const fileAndSpecsAvailable = () => new Promise(resolve => {

      var isAvailable;

      isAvailable = function() {
      if (AudioFile && Spec) {
      return true;
      }
      else  {return false}

      } 

      resolve (isAvailable())
  })

  const meetsDurationSpecs= () => new Promise(resolve => {

    var objectURL = URL.createObjectURL(AudioFile);
    var convertedAudio = new Audio([objectURL]);

    convertedAudio.onloadedmetadata = () => {
    
        var isDurationConfrom
        
        isDurationConfrom = () => { 
          if (convertedAudio.duration < Spec.duration) {
          return true }
          else {return false}
        }
        resolve(isDurationConfrom()) 

    }

  })

  const meetsFormatSpecs = () => new Promise(resolve => {

      var isTypeConform;

      isTypeConform = function() {
      if (AudioFile.type.includes (Spec.type)){
      return true;
      }
      else  {return false}

      } 

      resolve (isTypeConform())
  })

  const meetsSizeSpecs = () => new Promise(resolve => {

      var hasSize;

      hasSize= function() {
      if (AudioFile.size < Spec.size ){
      return true;
      }
      else {return false}

      } 

      resolve (hasSize())
  })

return 
// here i chain the promises together
var hello;
hello = () => fileAndSpecsAvailable ()
  .then(function(fileAndSpecsAvailable) {
    if (fileAndSpecsAvailable === true)
    {
      console.log("fileAndSpecsAvailable") 

       meetsFormatSpecs ()
        .then(function(meetsFormatSpecs) {


          if (meetsFormatSpecs === true) {
                        console.log("meetsFormatSpecs")
                        meetsSizeSpecs ()
                        .then(function(meetsSizeSpecs) {

                          if (meetsSizeSpecs === true) {
                            console.log("meetsSizeSpecs")
                            meetsDurationSpecs ()
                            .then(function(meetsDurationSpecs) {

                            if (meetsDurationSpecs === true) {
                            return true
                             console.log(meetsDurationSpecs);
                             }
                            else { 
                              console.log (meetsDurationSpecs); 
                              return false}
                            })

                          }

                          else {console.log("NotmeetsSizeSpecs"); return false}
                        })
                }
          else {return false}
  })
    } else {return null}
  })
  console.log (hello ())

  }

导出函数验证音频文件(规范、音频文件){
const fileandspecsavaailable=()=>新承诺(解析=>{
var可用;
isAvailable=函数(){
if(音频文件和规范){
返回true;
}
else{return false}
} 
解析(isAvailable())
})
const meetsDurationSpecs=()=>新承诺(解决=>{
var objectURL=URL.createObjectURL(音频文件);
var convertedAudio=新音频([objectURL]);
convertedAudio.onloadedmetadata=()=>{
var是从
isDurationConfrom=()=>{
if(转换音频持续时间<规范持续时间){
返回真值}
else{return false}
}
解析(isDurationConfrom())
}
})
const meetsFormatSpecs=()=>新承诺(解析=>{
var是一致的;
isTypeConform=函数(){
if(AudioFile.type.includes(Spec.type)){
返回true;
}
else{return false}
} 
解析(isTypeConform())
})
const meetsSizeSpecs=()=>新承诺(解决=>{
var hasSize;
hasSize=函数(){
如果(AudioFile.sizefileAndSpecsAvailable()
.then(函数(fileAndSpecsAvailable){
if(fileandspecsavaailable===true)
{
console.log(“fileandspecsavaailable”)
meetsFormatSpecs()
.then(功能(meetsFormatSpecs){
如果(meetsFormatSpecs===true){
console.log(“meetsFormatSpecs”)
会议规格()
.then(功能(meetsSizeSpecs){
if(meetsSizeSpecs===true){
console.log(“meetsSizeSpecs”)
满足持续时间规范()
.然后(功能(满足持续时间规范){
如果(meetsDurationSpecs===真){
返回真值
控制台日志(满足持续时间规范);
}
否则{
console.log(满足持续时间规范);
返回false}
})
}
else{console.log(“NotmeetsSizeSpecs”);返回false}
})
}
else{return false}
})
}else{return null}
})
console.log(hello())
}