如何将params传递给回调

时间:2015-07-20 08:13:37

标签: javascript

我正在努力寻找实施以下内容的最佳做法:
我有3个功能:managerhttpGetonsuccess

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

  2. httpGet发出请求并调用onsuccesss

  3. onsuccess使用来自manager

  4. 的需求参数

    在不涉及manager的情况下,从onsuccess传递和参数httGet的最佳方式是什么? 我正在考虑将params对象传递给httpGet,而onsuccess又传递给 var url = my.app.namespace.util.Formatter.configUrl("serviceUrl"); var dataModel = new sap.ui.model.odata.ODataModel(url, true); ,但我真的不喜欢将params传递给不使用的函数他们都是。

3 个答案:

答案 0 :(得分:1)

你的意思是这样的:

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();
}

Fiddle

答案 1 :(得分:1)

使用closure

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是额外数据。

答案 2 :(得分:1)

  1. onsuccess定义为manager中的本地函数,它可以使用其参数和局部变量。
  2. onsuccess传递给httpGet