Javascript函数链接

我经常看到这样的function链:

db.find('where...') .success(function(){...}) .error(function(error){...}); 

我正在为我的项目开发validation库,我想知道我该如何做链接。 问候

从函数调用中返回正在操作的对象。

 function MyObject(x, y) { var self = this; self.x = x; self.y = y; return { moveLeft: function (amt) { self.x -= amt; return self; }, moveRight: function (amt) { self.x += amt; return self; } } } var o = MyObject(0, 0); o.moveLeft(5).moveRight(3); 

你所指的是所谓的Promise ,它是Javascript中处理asynchronous函数的编程风格。 更多信息在这里http://blog.mediumequalsmessage.com/promise-deferred-objects-in-javascript-pt2-practical-use

在你的具体情况下,你可以使用的when 。 以下是一些可以帮助您开始的示例代码

 function validateUnique() { var deferred = when.defer(); db.query(...query to check uniqueness here.., function(error, result){ // this is a normal callback-style function if (error) { deferred.reject(error); } else { deferred.resolve(result); } } return deferred.promise(); // return a Deferred object so that others can consume } 

用法

 validateUnique().done(function(result){ // handle result here }, function(error){ // handle error here }) 

如果你想继续连锁

 validateUnique().then(anotherValidateFunction) .then(yetAnotherValidateFunction) .done(function(result){}, function(error){}) 

P / s: https : //github.com/cujojs/when when的链接