是否有一种方法可以整齐地包装这个JS调用
Is there a way to wrap this JS call neatly?
假设我有:
var details = {
method: 'POST',
url: 'http://example.com/',
async: true,
params: {'param1': '1', 'param2': '2'},
headers: {'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT', 'Cache-Control': 'max-age=0'},
contentType: 'text'
};
kango.xhr.send(details, function(data) {
if (data.status == 200 && data.response != null) {
var text = data.response;
kango.console.log(text);
}
else { // something went wrong
kango.console.log('something went wrong');
}
});
是否有一种方法可以更整齐地包装它-就像我真正改变的唯一变量是GET/POST一样,所以我在想这样的东西:
call('POST', function(data) {});
这可能吗?
我对JS不够熟悉。
将逻辑包装在另一个函数中,像这样:
function getData(method) {
var details = {
method: method,
url: 'http://example.com/',
async: true,
params: {'param1': '1', 'param2': '2'},
headers: {'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT', 'Cache-Control': 'max-age=0'},
contentType: 'text'
};
kango.xhr.send(details, function(data) {
if (data.status == 200 && data.response != null) {
var text = data.response;
kango.console.log(text);
}
else { // something went wrong
kango.console.log('something went wrong');
}
});
}
用getData('POST')
或getData('GET')
来命名
function Call(method,callback){
var details = {
method: method,
url: 'http://example.com/',
async: true,
params: {'param1': '1', 'param2': '2'},
headers: {'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT', 'Cache-Control': 'max-age=0'},
contentType: 'text'
};
kango.xhr.send(details, function(data) {
if (data.status == 200 && data.response != null) {
if (typeof callback === "function") {
callback.call(kango,data);
}
}
else { // something went wrong
kango.console.log('something went wrong');
}
});
}
要提高代码质量,您应该:
- 检查
typeof callback === "function"
是否为函数参数 -
callback.call(kango,data);
传递kango
作为上下文。在回调函数内部,您可以使用this
来访问。这将创建更松散耦合的代码。
相关文章:
- 如何在 ajax 调用后更改包装器 JavaScript 函数中的全局变量
- 将脚本包装在调用函数中
- 如何制作父/包装器组件“;触发器”;或调用子级上的方法
- jquery+调用来自另一个Javascript包装器的函数
- 在$.ajax调用中将附加数据添加到jQuery包装的对象数据中
- 用(function(){…}).call(this)包装文件,而用简单的()包装调用
- 如何将回调函数包装在其他回调函数中并从中调用
- 调用一个按钮点击,该按钮被包装在html页面内的另一个html标记中
- I'我刚刚编译了一些dojo文件:如何在匿名包装器中调用函数
- 我可以在这个例子中立即调用我的函数,而不是通过匿名函数包装它吗?
- 如何包装需要异步调用的复杂 if-then 语句
- 当花式盒子包装高度发生变化时,如何调用花式框调整大小函数
- 包装“控制台.log”并保留调用堆栈
- EmberJS actions - 当包装在“actions”中时,从另一个操作调用一个操作
- 如何在立即调用函数表达式(IIFE)中包装JavaScriptrails资产
- 为什么这个由Typescript生成的JavaScript构造函数包装了一个立即调用的函数
- 从jQueryAJAX内部调用包装器函数完成函数
- Nodejs:将整个脚本包装在函数调用中
- 检查是否调用了包装函数
- 如何在JSONP调用中用回调函数名包装响应