是否有一种方法可以整齐地包装这个JS调用

Is there a way to wrap this JS call neatly?

本文关键字:包装 调用 JS 方法 一种 是否      更新时间:2023-09-26

假设我有:

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来访问。这将创建更松散耦合的代码。