gpt4 book ai didi

javascript - 如果我们不等待 promise 会发生什么

转载 作者:行者123 更新时间:2023-12-01 15:55:32 25 4
gpt4 key购买 nike

我有这个功能可以使用给定的源播放音频,它工作正常:

function sfxPlay(source) {
let sfxAudio = new Audio(`${source}`);
sfxAudio.crossOrigin = "anonymous";
sfxAudio.play();

return new Promise((resolve) => {
sfxAudio.addEventListener("ended", function () {
sfxAudio.currentTime = 0;
resolve();
});
});
}

我将在这样的异步函数中使用它:
await sfxPlay(source.mp3);

问题是如果我想在没有 await 的情况下使用该功能怎么办? ?如果稍后我再次将它与 await 一起使用,这是否会产生任何错误......当我们不等待它时,该 promise 会发生什么?!

编辑:
我的意思是,如果我们在函数 A 中有这样的函数:
sfxPlay(source.mp3);

像这样在函数 B 中使用它可以接受吗?
await sfxPlay(source.mp3);

最佳答案

如果你不使用 await,你仍然可以使用 promise,你只需要使用 .then 手动等待它( promise 只是作为普通对象返回):

sfxPlay(source).then(()=>{
// ...
});

否则,如果你不使用它,默认情况下不会发生任何好事或坏事——promise 中的代码仍然会运行,但调用 resolve 时不会发生任何事情.

如果您调用 reject ,但是,没有任何东西可以处理拒绝;这很糟糕,因为它在大多数平台上都会引发错误。因此,请确保您从不使用 reject除非您有匹配的 .catch对于它(另请注意 try/ catch 语句不适用于这种特定类型的错误)。感谢@T.J。克劳德指出了这一点。

您可以混合使用这两种方法而不会出现任何问题。

关于javascript - 如果我们不等待 promise 会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61834275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com