如何声明像Parsecallback呢?

通常,我声明一个函数成功和失败callback如下

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

那么我会像这样使用它

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

但是 ,当我看着Parse的Javascript指南,他们指导我使用这样的function(即合并成功和失败的callback在一个对象?)

 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. } }); 

我怎样才能声明我的function成功和失败callback像parsing呢?

你只需要改变你的函数来接受一个callback参数(无论你想要什么),然后访问该对象的处理程序:

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

那么你会打电话给:

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

请注意,您的代码应该检查以确保传入的对象在尝试调用它们之前都具有这两种方法。

该方法正在接受一个包含两个函数指针的对象。 所以这有点像创build一个对象:

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

你可以简单地改变你的方法:

 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"; } } 

然后调用它:

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

看起来像你想要的是一个参数,它是一个successerror函数作为属性的对象

你可以像这样声明函数

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

作为一个方面的说明,因为我看到你已经标记了node.js ,我还build议你看看使用一个错误优先callback ,这使得你的函数/ apis简单,也遵循一个相当标准的节点约定。