亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取異步函數的返回值而無需再次調用它

獲取異步函數的返回值而無需再次調用它

慕標琳琳 2023-09-28 15:43:35
這是代碼:const onStartRecord = async() => {  try {    const path = Platform.select({      ios: `file:///audio/${filenameGenerator}.m4a`,      android: `file:///audio/${filenameGenerator}.mp4`,    });    const audioSet: AudioSet = {      AudioEncoderAndroid: AudioEncoderAndroidType.AAC,      AudioSourceAndroid: AudioSourceAndroidType.MIC,      AVEncoderAudioQualityKeyIOS: AVEncoderAudioQualityIOSType.high,      AVNumberOfChannelsKeyIOS: 2,      AVFormatIDKeyIOS: AVEncodingOption.aac,    };    console.log('audioSet', audioSet);    const uri = await audioRecorderPlayer.startRecorder(path, audioSet);    audioRecorderPlayer.addRecordBackListener((e: any) => {      setAudioProp(audioProp => {        return { ...audioProp,          recordSecs: e.current_position,          recordTime: audioRecorderPlayer.mmssss(Math.floor(e.current_position)),        }      });    });    console.log(`uri: ${uri}`);    return uri  } catch (err) {    console.log(err);    return;  }};const audioPath = async() => {  const result = await onStartRecord();  return result;}const onSubmit = async() => {  const audiopath = await audioPath();  console.log("this is the audiopath", audiopath)}};當我觸發 onSubmit 函數時,我可以得到我想要的,但問題是,它還會再次觸發 onStartRecord 函數,這在我的情況下會導致錯誤,我只想獲取 onStartRecord 解析時生成的 uri,但我不'不想再次觸發,那么如果我需要使用onSubmit函數并從onStartRecord獲取值,我該怎么辦?謝謝 !
查看完整描述

1 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

不應返回uri,而onStartRecord應將其分配給全局變量。


然后audioPath()可以返回該變量。


let savedAudioPath;


const onStartRecord = async() => {

  try {

    const path = Platform.select({

      ios: `file:///audio/${filenameGenerator}.m4a`,

      android: `file:///audio/${filenameGenerator}.mp4`,

    });

    const audioSet: AudioSet = {

      AudioEncoderAndroid: AudioEncoderAndroidType.AAC,

      AudioSourceAndroid: AudioSourceAndroidType.MIC,

      AVEncoderAudioQualityKeyIOS: AVEncoderAudioQualityIOSType.high,

      AVNumberOfChannelsKeyIOS: 2,

      AVFormatIDKeyIOS: AVEncodingOption.aac,

    };

    console.log('audioSet', audioSet);

    const uri = await audioRecorderPlayer.startRecorder(path, audioSet);

    audioRecorderPlayer.addRecordBackListener((e: any) => {

      setAudioProp(audioProp => {

        return { ...audioProp,

          recordSecs: e.current_position,

          recordTime: audioRecorderPlayer.mmssss(Math.floor(e.current_position)),

        }

      });


    });


    console.log(`uri: ${uri}`);

    savedAudioPath = uri;

  } catch (err) {

    console.log(err);

    return;

  }

};


const audioPath = async () => savedAudioPath;


查看完整回答
反對 回復 2023-09-28
  • 1 回答
  • 0 關注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號