【发布时间】:2016-02-01 19:05:43
【问题描述】:
我正在使用 bluebird 库而不是 memcached。
memcached.set('foo', 'bar', 10, function (err) { /* stuff */ });
此函数不会在第二个参数中调用成功回调,因此似乎 .then(res) 函数没有被调用。
Promise.promisifyAll(memcached);
memcached.setAsync(hashedCacheKey, obj).then(function (res) {
resolve(res);
}).catch(function (err) {
reject(err, null);
});
我有什么方法可以处理未调用的成功事件吗?
【问题讨论】:
-
@raina77ow 它是在“Promise.promisifyAll(memcached);”之后生成的我编辑了我的帖子。
-
旁注,看起来您可能不必要地将逻辑包装在
new Promise构造函数中。 -
@Retsam 我正在返回新的承诺,因为调用函数也使用 then/catch 签名。
-
@Teomanshipahi 听起来您正在使用 Promise 构造函数反模式。你真的应该直接返回
memcached.setAsync的承诺。见here。 -
@Retsam 一个问题有两个答案!感谢您指出这一点,我改变了您建议的方式,现在更清楚了。谢谢!
标签: javascript node.js promise memcached bluebird