例如,您有一个Web音乐播放器应用程序。当用户点击播放按钮,功能触发,寻找MP3数据,设置播放器等等,然后用户改变主意并点击在另一个轨道上播放。有没有办法完全取消上一个功能?我知道你可以中止XHRequests,但我的意思是整个功能。也许JS承诺?
答案 0 :(得分:2)
在javascript中,同步函数将运行完成。它不会被其他用户操作中断。因此,在您的场景中,如果函数触发并正在设置播放器,则该函数将在处理下一个用户事件之前运行完成。所以,你不能在javascript中中止一个同步函数而且无论如何都没有办法因为(除了网络工作者不是我们在这里讨论的),javascript是单线程所以只要函数正在运行,它就会运行完成,不会处理任何其他用户事件。
但是,如果该函数在其中具有某种异步操作(例如通过ajax加载某些内容或加载音乐文件的播放器),那么异步操作是否可以中止取决于具体的支持。那个操作 - 没有通用的中止。为了帮助您了解异步详细信息,您需要披露实际代码,以便我们了解您正在做什么。
Promise不是用于中止异步操作的工具。事实上,它们是一种相反的工具,因为它们报告异步操作发生的事情和时间。他们不会导致这些事情发生,然后只是在异步操作发生事件时通知观察者。
与StackOverflow问题一样,如果您披露实际代码,我们可以提供更深入的帮助,因为这会将您的问题从理论讨论转变为对实际代码选项的实际分析。