繁体   English   中英

如何将参数传递给回调

[英]How to pass params to a callback

我正在寻找实现以下目标的最佳做法:
我有3个功能: managerhttpGetonsuccess

  1. manager调用httpGet函数并成功传递onsuccess函数。

  2. httpGet发出请求并调用onsuccesss

  3. onsuccess使用需要manager参数

在不涉及httGet情况下,从manager传递到onsuccess的最佳方法是什么?
我当时在考虑将params对象传递给httpGet ,该对象又将传递给onsuccess但我真的不喜欢将参数传递给根本不使用它们的函数的想法。

您的意思是这样的:

function manager()
{
   var managerParam =0;
   //the anonymous function below is in the scope of manager() so has
   //access to all of managers parameters
   httpGet(function() {
      //this function can use managerParam
      managerParam ++;
   });

  console.log(managerParam === 1); //true
}

function httpGet(onsuccess)
{
   onsuccess();
}

小提琴

使用闭包

data = { cool: true };
var yourCallbackFunction = function(httpData, notHttpData){};

var bakedCallback = (function() {
    var _data = data;
    return function(httpResp) {
        yourCallbackFunction(httpResp, _data);
    }
})();
httpGet.onSuccess(bakedCallback);

data是您想要传递给函数的额外数据。

在您的回调中: httpData是从请求接收的数据。 NOThttpData是多余的数据。

  1. manager onsuccess定义为局部函数,它可以使用其参数和局部变量。
  2. 传递onsuccesshttpGet

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM