建议如何减少冗余的js代码

时间:2017-09-22 08:17:52

标签: javascript

//Links to jsfiddle must be accompained by code
var customApi = {
        feeds: {
            getFeedActivities(feedName, feedId, callback) {
                function good(data) {
                    return callback(data);
                }

                function bad(result) {
                    return callback(null);
                }
                var url = `${origin}/api/feeds/${feedName}/${feedId}`;
                callApi(url, null, _GET, good, bad);
            },
            getUserFeedActivities(userId, callback) {
                return getFeed('User', userId, callback);
            },
            followFeed(feedName, feedId, callback) {
                function good(data) {
                    return callback(data);
                }

                function bad(result) {
                    return callback(null);
                }
                var url = `${origin}/api/feeds/${feedName}/${feedId}`;
                callApi(url, null, _GET, good, bad);
            }
        },

        media: {
            uploadTemp: function(model, callback) {
                function good(data) {
                    return callback(data);
                }

                function bad(result) {
                    return callback(null);
                }
                var url = origin + "/api/media?type=photo";
                callApi(url, model, _POST, good, bad);
            },
        },
        //

我有一堆自定义回调函数,可以通过更通用的回调来处理。我知道如何创建一个通用函数来处理成功或失败的api调用,但有没有办法让我用自定义回调来做呢?

1 个答案:

答案 0 :(得分:2)

我给自己一个处理回调的(或版本)callApi的包装器。这是一个包装器:

function callApi2(url, model, method, callback) {
    return callApi(
        url,
        model,
        method,
        function(result) {
            return callback(result);
        },
        function() {
            return callback(null);
        }
    );
}

然后followFeed变为:

followFeed(feedName, feedId, callback) {
    var url = `${origin}/api/feeds/${feedName}/${feedId}`;
    callApi2(url, null, _GET, callback);
}