如何使函数像回调一样运行

How can I make a function act like a callback

本文关键字:一样 运行 何使 函数 回调      更新时间:2023-09-26

removeHighlight()完成后,我怎样才能让shwOpts.show("fast");采取行动?

我想如果我把一个匿名函数作为参数放在另一个函数中,它将充当回调。这行不通。

removeHighlight : function(f) {
        // remove previous highlight.
        var highlight = $('#openid_highlight');
        if (highlight) {
            highlight.replaceWith($('#openid_highlight a')[0]);
        }
    },

 moreOptsLink = $("#more-options-link").click(function () {
              moreOptsLink.detach();
              openid.removeHighlight(function(){$("#show-more-options").show("fast");});
              //shwOpts.show("fast");
              openid.setPref("showMoreOpenIdOptions", !0)
            });

您没有执行回调函数

removeHighlight : function(f) {
    // remove previous highlight.
    var highlight = $('#openid_highlight');
    if (highlight) {
        highlight.replaceWith($('#openid_highlight a')[0]);
    }
    if (typeof(f) === "function") {
        f();
    }
},

你应该在 removeHighlight 函数中调用回调,如下所示:

removeHighlight : function(f) {
    // remove previous highlight.
    var highlight = $('#openid_highlight');
    if (highlight) {
        highlight.replaceWith($('#openid_highlight a')[0]);
        if( typeof f === 'function' ) {
            f();
        }
    }
},

moreOptsLink = $("#more-options-link").click(function () {
     moreOptsLink.detach();
     openid.removeHighlight(function(){
         $("#show-more-options").show("fast");
     });
     openid.setPref("showMoreOpenIdOptions", true);
});

通过使用 typeof 控件,当您不将函数作为参数传递给函数时,不会发生任何错误。

removeHighlight : function(f) {
        // remove previous highlight.
        var highlight = $('#openid_highlight');
        if (highlight) {
            highlight.replaceWith($('#openid_highlight a')[0]);
        }
   //you need to call f
       f()
    },