¿Cómo declarar la callback como lo hace Parse?

Por lo general, declaro una function con éxito y fallo de callback como sigue

function yoyoyo(param, successCallback, failCallback) { // do something with param // ... if (success) { successCallback('success'); } else { failCallback('fail'); } } 

entonces lo usaré así

 yoyoyo('abc', function(success) { console.log(success); }, function(err) { console.log(err); }); 

PERO , cuando miro en la Guía de Javascript de Parse, me guían a usar la function de esta manera (es decir, fusionar el éxito y las devoluciones fallidas en un object).

 var GameScore = Parse.Object.extend("GameScore"); var query = new Parse.Query(GameScore); query.get("xWMyZ4YEGZ", { success: function(gameScore) { // The object was retrieved successfully. }, error: function(object, error) { // The object was not retrieved successfully. // error is a Parse.Error with an error code and message. } }); 

¿Cómo puedo declarar mi function con éxito y fallar las devoluciones de llamada como lo hace el análisis sintáctico?

Simplemente cambiaría su function para aceptar una callback arg (llámela como lo desee) y luego acceda a los manejadores de ese object:

 function yoyoyo(param, callbacks) { // do something with param // ... if (success) { callbacks.success('success'); } else { callbacks.error('fail'); } } 

entonces lo llamarías con:

 yoyoyo('abc', { success: function(status) { }, error: function(status) { } }); 

Sin embargo, tenga en count que su código debe verificar para asegurarse de que el object pasado tiene ambos methods antes de intentar llamarlos.

Ese método acepta un object que contiene dos pointers a funciones. Así que es un poco como crear un object así:

 var parameters = {success:function() {}, error:function(){}}; 

Simplemente puede cambiar su método de esta manera:

 function yoyoyo(param, callbacks) { //Add some error checking to check the callbacks is in the right state if (typeof callbacks.success != "undefined" && typeof callbacks.error!= "undefined") { // do something with param // ... if (success) { callbacks.success('success'); } else { callbacks.error('fail'); } } else { throw "callbacks must contain a success and error method"; } } 

entonces llámalo:

 .yoyoto(param, {success:function() {}, error:function(){}}); 

Parece que lo que quieres es un argumento que es un object con success y funciones de error como attributes

Puedes declarar la function como tal

 function (param, callbacks) { // do something with param // ... if (success) { if(callbacks && callbacks.success) callbacks.success('success'); } else { if(callbacks && callbacks.fail) callbacks.fail('fail'); } } 

Como nota al margen dado que veo que has labeldo node.js , también te recomiendo que consultes el uso de una sola callback por error , que mantiene tus funciones / apis simples y también sigue una convención de nodos bastante estándar.