第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

React:如何從函數(shù)中獲取值并將其寫(xiě)入狀態(tài)?

React:如何從函數(shù)中獲取值并將其寫(xiě)入狀態(tài)?

我正在開(kāi)發(fā)一個(gè)函數(shù),可以讀取音頻文件輸入的持續(xù)時(shí)間,然后將其寫(xiě)入狀態(tài)。該getDuration功能有效,我可以通過(guò)控制臺(tái)記錄音頻文件的持續(xù)時(shí)間。但是,我在訪(fǎng)問(wèn)函數(shù)外部的持續(xù)時(shí)間時(shí)遇到問(wèn)題getDuration。我想做這樣的事情:onChangeAudioFile(e) {  this.setState({    selectedFileDuration: getDuration(e.target.files[0])  };  function getDuration(file) {    var objectURL = URL.createObjectURL(file);    var audio = new Audio([objectURL]);    var duration = null    audio.onloadedmetadata = function() {      console.log(audio.duration);      duration = audio.duration;    }    return duration  }}我可以控制臺(tái)記錄持續(xù)時(shí)間,但無(wú)法將值從函數(shù)中取出并將其寫(xiě)入我的狀態(tài)。我很高興得到任何澄清。
查看完整描述

2 回答

?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊

問(wèn)題是它return duration是在onloadedmetadata回調(diào)執(zhí)行之前執(zhí)行的。該事件是異步的。其他問(wèn)答中對(duì)此進(jìn)行了更詳細(xì)的解釋?zhuān)?/p>


在您的情況下,不要從回調(diào)函數(shù)中獲取值,而是setState在該值可用時(shí)/在該值可用時(shí)調(diào)用:在onloadedmetadata事件處理程序中:


onChangeAudioFile(e) {

? var objectURL = URL.createObjectURL(e.target.files[0]);

? var audio = new Audio([objectURL]);


? audio.onloadedmetadata = () => {

? ? this.setState({

? ? ? selectedFileDuration: audio.duration;

? ? };

? };

}


查看完整回答
反對(duì) 回復(fù) 2023-07-06
?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊

該duration值不容易獲得,您需要?jiǎng)?chuàng)建一個(gè)承諾,以便您可以await獲取getDuration.


async onChangeAudioFile(e) {

  this.setState({

    selectedFileDuration: await getDuration(e.target.files[0])

  };


  function getDuration(file) {

    return new Promise((res) => {

      var objectURL = URL.createObjectURL(file);

      var audio = new Audio([objectURL]);


      audio.onloadedmetadata = function() {

        console.log(audio.duration);

        res(audio.duration)

      }

    })

  }

}


查看完整回答
反對(duì) 回復(fù) 2023-07-06
  • 2 回答
  • 0 關(guān)注
  • 180 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)