JavaScript:在继续下一行之前,如何等待函数结束?

时间:2019-08-27 21:22:12

标签: javascript synchronization

我正在使用JavaScript为弹出内容制作一些平滑的动画。单击我网站上的按钮时,一个iframe会出现在前景中,其中某些内容是从html文件加载的。

我的淡出动画有问题。我依次调用了两个函数opacityfadeout()和resetzindex()。但是,iframe的z索引会在淡出之前发生变化。

在opacityfadeout()完全完成(将iframe的不透明度设为0)之后,我需要resetzindex()才能仅运行

解决这个简单难题的最简单,最干净的方法是什么?

function closecontent()
{
    opacityfadeout();
    resetzindex();
}

function opacityfadeout()
{
    var f = setInterval(function()
    {
        if(opacityvalue > 0.0)
        {
            opacityvalue -= increment;
        }
        else
        {
            clearInterval(f);
        }
        iframe.style.opacity = opacity;

    }, 16);
}

function resetzindex()
{
    iframe.style.zIndex = "-5";
}

2 个答案:

答案 0 :(得分:2)

function closecontent()
{
    opacityfadeout(resetzindex);
}

function opacityfadeout(callback)
{
    var f = setInterval(function()
    {
        if(opacityvalue > 0.0)
        {
            opacityvalue -= increment;
        }
        else
        {
            clearInterval(f);
            if (callback) callback()
        }
        iframe.style.opacity = opacity;

    }, 16);
}

function resetzindex()
{
    iframe.style.zIndex = "-5";
}

答案 1 :(得分:1)

已将RenderTargetBitmap bmp = new RenderTargetBitmap(180, 180, 120, 96, PixelFormats.Pbgra32); for (int i = 0; i < 10; i++) { try{ Clipboard.SetImage(bmp); return; } catch(Exception e) { } System.Threading.Thread.Sleep(10); } 作为回调参数发送到resetzindex,并在间隔结束后调用它。

opacityfadeout