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
的链接