我正在努力寻找实施以下内容的最佳做法:
我有3个功能:manager
,httpGet
和onsuccess
:
manager
调用httpGet
函数并传递。{
成功时要调用onsuccess
函数。
httpGet
发出请求并调用onsuccesss
onsuccess
使用来自manager
在不涉及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传递给不使用的函数他们都是。
答案 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();
}
答案 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)
onsuccess
定义为manager
中的本地函数,它可以使用其参数和局部变量。 onsuccess
传递给httpGet
。