-5

我在 javascript 中有一个由 ajax 调用组成的函数。我们称它为 search();

然后我有一个事件 onKeyUp。

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

我想在 search() 完成后调用这个函数。

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

这是我的代码:

function search () {
       ...
}

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

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

}

function enterPressed() {
       ...
}
4

4 回答 4

2

回调是前进的方向。

任何一个:

  1. 在搜索完成时触发的回调中绑定您的 keyup 事件处理程序
  2. 设置一个变量(在两个函数的范围内)并在搜索完成时更改其值。在 keyup 处理程序中执行任何操作之前,请检查值,如果没有更改,请return立即检查。

(这假设enterPressed从 keyup 函数调用很重要。如果包含 keyup 代码是一个红鲱鱼,只是表明你也想在其他时间调用它,那么直接将它用作回调)。

于 2013-04-20T09:01:03.113 回答
2

您将使用成功/完成回调在完成时调用您的函数。就像是:

$.ajax({
    ...
    success: enterPressed,
    ...
:);
于 2013-04-20T09:02:12.447 回答
0

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

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

search(function () {
    ed.onKeyUp.add(function (ed, e) {
        if (e.keyCode == 13) {
            enterPressed(); }
    }
});
于 2013-04-20T09:03:35.523 回答
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 迟早会成真……但是您知道现在可以做什么:)

于 2013-04-20T09:04:24.153 回答