虽然我已经知道了很长一段时间的承诺,但我最近才开始使用它们(或创建它们)。
我的要求是创建一个promise promise函数,以便调用者可以调用然后将其链接到其他函数调用。
像这样的简单函数......
/**
* Checks if a user is available in cache. If avaialble, returns
* the hash object of this user. If the cache is not enabled, or
* the user is not found in cache, it returns null object.
*
**/
function chkUserInCache(username, password, done) {
var cacheKey = "partner:" + username;
if (cache == null) return done(null);
// Look for the user in the cache.
cache.hgetallAsync(cacheKey).then(function(result){
if (result === null) return done(null);
else return done(null,result);
});
}
调用函数会调用:
chkUserInCache(u,p)
.then(result) {
// do something
}).catch(function(e){
// do something
});
目前,我知道的一种方法是使用Bluebird promise,然后在我的函数上调用promisify,以获得包含承诺的函数对象。
但是如果我有很多这样的函数(例如6到10),我是否应该继续在每个函数上调用promisifiy并将返回的对象存储在某处并使用它?
或者还有其他方法吗?或者,是否存在编写承诺兼容代码的本地方式?
对于简单的用例< 10个效用函数,如果有的话,最好的方法是什么?
答案 0 :(得分:0)
使用适当的promise API。
鉴于 var ipEndPoint = new IPEndPoint(IPAddress.Parse(exit.Address), 80);
已经是一个承诺返回函数,没有理由宣传hgetAllAsync
甚至使用chkUserInCache
构造函数。相反,您应该删除Promise
回调并返回承诺:
done