首页 > 解决方案 > javascript导出可重用函数

问题描述

我正在为有很多 ajax 请求的人构建这个应用程序。我正在使用Q库进行承诺处理,我发现我的很多请求都完全相同:

export function createAppointment(data) {
    return Q($.ajax({
        type: 'POST',
        url: 'api/appointments',
        data: data,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json'
    }));
}

export function availableAppointments(data) {
    return Q($.ajax({
        type: 'POST',
        url: 'api/appointments/available',
        data: data,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json'
    }));
}

我想做的是定义一个可以调用的函数,该函数接受 ajax 选项,但会执行承诺。我希望它将选项作为可以覆盖的默认值。

例如,就我而言,那里的选项如下所示:

{
    type: 'POST',
    data: data,
    contentType: 'application/json; charset=utf-8',
    dataType: 'json'
}

我唯一需要覆盖的是url。有人可以帮我弄这个吗?

标签: javascript

解决方案


您可以使用Object.assign自定义值修补包含默认值的对象。

由于 URL 每次都会更改,因此我已将其作为不同的参数添加到签名中。

function performRequest(url, data, options) {
    return Q($.ajax(Object.assign(
    {
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json'
    }, 
    options, 
    {   
        url: url,
        data: data,
    }
    )));
}

在这里,data并且url将始终覆盖options.


推荐阅读