好吧,我以为我已经理解了 Promises,但似乎我在这方面遗漏了一些东西......
var redisPromise = new Promise(function(resolve, reject) {
redisClient.on('error', reject);
redisClient.on('ready', resolve);
}).then(function() {
// THIS ISN'T CALLED - CORRECT
log.enabled && log('connected, version: %s', redisClient.server_info.redis_version);
return redisClient;
}).catch(function() {
// THIS GETS CALLED - CORRECT
log('failed connecting to database:', e.message);
});
redisPromise.then(function() {
log("This shouldn't be called when connection fails");
});
对于与 Redis 的连接失败的情况,我希望返回的 Promise 会被拒绝。但是由于某种原因,它已经实现了。我在这里错过了什么吗?
我正在使用Bluebird实现。那里可能有一些错误吗?我有点怀疑,这一切似乎都有很好的记录并且有意义......在纸上。
解决