【问题标题】:Wait till first Function to execute等到第一个函数执行
【发布时间】:2015-10-29 02:17:12
【问题描述】:

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

function fn1()
{
   this.window.close();
}

function fn2()
{
  Refreshpage()//Refreshin the page logic
}

function callback()
{
   var callbacks = $.Callbacks();
   callbacks.add(fn1);
   callbacks.add(fn2);
}

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

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

【问题讨论】:

标签: jquery


【解决方案1】:

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

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    相关资源
    最近更新 更多