【发布时间】:2026-02-16 05:05:02
【问题描述】:
我正在尝试使用expo-av lib
我使用以下异步函数从 URL 播放声音文件:
PlaySound = async (soundURL) => {
try {
const playbackObject = await Audio.Sound.createAsync(
{ uri: soundURL },
{ shouldPlay: this.state.shouldPlay }
);
} catch (error) {
console.log('ERROR:'+error);
// Error retrieving data
}
return playbackObject;
};
stopSound = async (soundURL) => {
try {
this.setState({shouldPlay:false});
const playbackObject = await PlaySound(soundURL);
} catch (error) {
console.log('ERROR:'+error);
// Error retrieving data
}
playbackObject.stopAsync(); // this is causing the error
};
我收到此错误:
错误:ReferenceError:找不到变量:playbackObject
[未处理的承诺拒绝:ReferenceError:找不到变量: 播放对象]
PlaySound 函数可以按我的意愿工作。现在我希望能够使用stopSound 函数暂停/停止。 The documentation 说使用soundObject.stopAsync(),在我的情况下是playbackObject。但我不知道如何在函数之外访问这个 const?
谁能指出我正确的方向?
【问题讨论】:
-
从异步函数中返回它,然后等待返回的承诺。它将解析为播放对象。
-
@Li357 感谢您的回复 - 你能告诉我如何返回它然后在函数之外使用它吗?
-
return playbackObject在 try 块中,然后在需要对象的地方调用const playbackObject = await PlaySound(…)。请务必处理 catch 块。 -
@Li357 感谢您的回复 - 我已经更新了我的问题,因为我仍然无法让它工作:(
-
这是一个类属性。应该是
this.PlaySound
标签: javascript react-native expo