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

请问怎么更好地理解JavaScript中的回调函数

请问怎么更好地理解JavaScript中的回调函数

眼眸繁星 2019-08-01 11:02:21
更好地理解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贡献1891条经验 获得超3个赞

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

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

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




查看完整回答
反对 回复 2019-08-03
?
MYYA

TA贡献1868条经验 获得超4个赞

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

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-08-03
  • 3 回答
  • 0 关注
  • 349 浏览
慕课专栏
更多

添加回答

举报

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