passing encapsulated functions

by John Allan

JavaScript

function service(callback) {
    setTimeout(function () {
        callback('response: success')
    }, parseInt(Math.random() * 100, 10));
}

function handleResponse(g, data) {
    console.log(g, data);
}

function callService(guid) {
    var responseHandler = (function (guid) {
        return function (data) {
            handleResponse(guid, data);
        }
    }(guid));
    
    service(responseHandler);
}

callService('guid: 1');
callService('guid: 2');
callService('guid: 3');