Which function callback structure is the best to use in Javascript and why? I have seen these two options use quite a lot. Are there any more?
Option A:
// DECLARATION
function funcA(required, success, error, options){
// if there is an error in your function return
// and run error function
if(errorHappens){ return error('an error') };
// if no error happened: run the success function
success('all good here is your var back', required);
}
.
// USAGE
funcA('this is required', function(result){
// all good, do something with the result :)
},
function(error){
// tell the user about the error
alert('error happened')
},{
optionalThing: ':-)'
});
Option B:
// DECLARATION
function funcB(required, callback, options){
// if an error happens run the single callback with
// the err param populated and return
if(errorHappens){ return callback('an error') };
// if no error happened: run the callback with 'null'
// as the error param.
callback(null, 'this is a result');
}
.
// USAGE
funcB('this is required', function(err, result){
if(err){ return alert('error happened') };
// all good do something with the result :)
},{
optionalThing: ':-)'
}
It depends on the environment, for node.js
I would personally recommend you stick to callback as the last parameter
Mainly because that’s the coding style used in the node community. If you’re not interacting with node.js at all then you should probably use the style most common to the environment you’re interacting with.
If your environment mainly revolves around jQuery then I would just return a
$.Deferredobject from yourdoSomethingfunctionEdit: