等到第一个函数执行

时间:2015-10-28 17:01:48

标签: jquery

我有两个javascript函数,fn1将关闭弹出窗口,fn2将刷新父页面。并在弹出窗口的按钮单击中调用回调函数。

remDr$findElement(using = "link text", "PDF")

问题是在关闭弹出窗口之前,页面正在刷新(即在fn1结束之前执行代码fn2正在执行)。

如何在fn2开始执行之前等待fn1完成执行代码。

1 个答案:

答案 0 :(得分:0)

尝试在callbacks.add(fn2)中添加fn1,在callbacks.fire(fn2)调用后调用.close()

var w = window.open("", "w");

var callbacks = $.Callbacks();

function fn2() {
    alert("complete")
}

function fn1() {        
    callbacks.add(fn2);
    w.close();
    callbacks.fire()
}

function callback() {
    callbacks.add(fn1);
    callbacks.fire();
}

callback()

另请参见$.queue(),其中可以传递函数数组,可以使用当前函数中的next()调用队列列表中的下一个函数。如果未调用next(),则不会调用下一个函数

var w = window.open("", "w");

var obj = {};

$.queue(obj, "list", [fn1, fn2])


function fn2() {
    alert("complete") //Refreshin the page logic
}

function fn1(next) {
    w.close();
    next()
}

function callback() {
   $.dequeue(obj, "list")
}

callback()