为了账号安全,请及时绑定邮箱和手机立即绑定

更好地理解JavaScript中的回调函数

更好地理解JavaScript中的回调函数

幕布斯6054654 2019-07-19 10:13:47
更好地理解JavaScript中的回调函数我理解将一个函数作为回调传递给另一个函数,并让它执行,但我并不理解最佳的实现。我正在寻找一个非常基本的例子,如下所示:var myCallBackExample = {     myFirstFunction : function( param1, param2, callback ) {         // Do something with param1 and param2.         if ( arguments.length == 3 ) {             // Execute callback function.             // What is the "best" way to do this?         }     },     mySecondFunction : function() {         myFirstFunction( false, true, function() {             // When this anonymous function is called, execute it.         });     }};在myFirstFunction中,如果我确实返回了新的回调(),那么它就能工作并执行匿名函数,但这似乎不是正确的方法。
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

您应该检查回调是否存在,并且是一个可执行函数:

if (callback && typeof(callback) === "function") {
    // execute the callback, passing parameters as necessary
    callback();}

许多库(jQuery、dojo等)对异步函数使用类似的模式,对于所有异步函数使用node.js(NodeJS通常通过errordata回拨电话)。查看他们的源代码会有帮助!


查看完整回答
反对 回复 2019-07-19
?
郎朗坤

TA贡献1921条经验 获得超9个赞

执行一个函数有三种主要的可能性:

var callback = function(x, y) {
    // "this" may be different depending how you call the function
    alert(this);};
  1. 回调(参数1,参数2);
  2. 调用(一些_Object,参数_1,参数_2);
  3. CARBACK.Apply(SomeObject,[参数1,参数2]);

您选择的方法取决于:

  1. 将参数存储在Array中或作为不同的变量存储。
  2. 您希望在某个对象的上下文中调用该函数。在这种情况下,在回调中使用“this”关键字将引用调用()或application()中作为参数传递的对象。如果不希望传递对象上下文,请使用空或未定义。在后一种情况下,全局对象将用于“this”。
查看完整回答
反对 回复 2019-07-19
  • 3 回答
  • 0 关注
  • 341 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信