当另一个方法完成时调用方法

时间:2013-04-20 08:57:51

标签: javascript jquery

我在javascript中有一个函数,它包含一个ajax调用。我们称之为search();

然后我在onKeyUp上发生了一个事件。

在onKeyUp事件中,我有一个enterPressed()函数。

我希望在搜索()结束后调用此函数。

我认为回调在这里无济于事。

这是我的代码:

function search () {
       ...
}

ed.onKeyUp.add(function (ed, e) {

    if (e.keyCode == 13)
                enterPressed();

}

function enterPressed() {
       ...
}

4 个答案:

答案 0 :(得分:2)

回调是前进的方向。

或者:

  1. 将您的keyup事件处理程序绑定在搜索完成
  2. 时触发的回调中
  3. 设置变量(在两个函数的范围内)并在搜索完成时更改其值。在使用keyup处理程序之前,检查值,如果没有更改,请立即return
  4. (这假设从keyup函数调用enterPressed是重要的。如果keyup代码的包含是红色鲱鱼,只是表明你也想在其他时间调用它以及然后直接用它作为回调)。

答案 1 :(得分:2)

您将使用success / complete回调在完成时调用您的函数。类似的东西:

$.ajax({
    ...
    success: enterPressed,
    ...
:);

答案 2 :(得分:0)

完成第一个函数后,将第二个函数作为参数传递给第一个函数,并在最后执行它。

function search (callback) {
    // your code here
    callback();
}

search(function () {
    ed.onKeyUp.add(function (ed, e) {
        if (e.keyCode == 13) {
            enterPressed(); }
    }
});

答案 3 :(得分:0)

试试这个:

var searchDone = false;

function search () {
       ...
   searchDone = true;
}

ed.onKeyUp.add(function (ed, e) {

    if (e.keyCode == 13)
                enterPressed();

}

function enterPressed() {
   if (!searchDone) {
      setTimeout(enterPressed,100); 
      return;
   }

       ...
}

显然你迟早会检查searchDone是否真的...但你知道你现在可以做些什么:)