Javascript 实现异步操作而不使用延迟

Javascript 实现异步操作而不使用延迟,javascript,asynchronous,Javascript,Asynchronous,我被async操作卡住了,我有一个方法可以做一些UI动画工作,我需要在UI动画完成后执行另一个代码块。例如: function myAsyncOperation() { // my UI animation gets completed over here } myAsyncOperation(); //after calling that function I need to print console. console.log("Hello world"); 注意:我知道我可以在myAsy

我被async操作卡住了,我有一个方法可以做一些UI动画工作,我需要在UI动画完成后执行另一个代码块。例如:

function myAsyncOperation() {
// my UI animation gets completed over here
}
myAsyncOperation();
//after calling that function I need to print console.
console.log("Hello world");

注意:我知道我可以在myAsyncOperation函数中使用延迟,并从该函数返回延迟,然后执行控制台。但是我想不延迟地实现它,因为我有一些限制

如果您使用CSS动画,那么可以使用javascript中的“animationend”事件

var anim = document.getElementById("anim");
anim.addEventListener("animationend", AnimationListener, false);
不同的浏览器对此事件侦听器有不同的实现,因此请为您需要支持和实现所有这些侦听器的浏览器查找正确的事件名称


您可以使用回调吗?它将改变代码结构,但它可能是一个可行的选择。您的限制是什么?这似乎是一个错误。你想达到什么目标?你需要这个做什么?你怎么知道你的
UI动画
什么时候完成?是的,我可以使用回调。我的限制是,如果我在myAsyncOperation中使用了deferred,那么我需要从函数返回def,并且必须在.then()函数中放入另一段代码,但我不能这样做。我能做的是,我必须以这样一种方式编写我的异步操作,即只有在执行此函数之后,我的另一段代码才会被执行。原因是,如果我使用延迟的,那么它会导致性能问题,并且还会增加代码的复杂性,因为我正在从事开源项目,我必须使代码尽可能简单,同时也必须考虑代码的复杂性,因为它也会被其他开发人员使用。