dubbo-node-client
dubbo-node-client copied to clipboard
发现 getZookeeper 中存在的问题,请您核实下
Registry.prototype.getZookeeper = function () { var defer = Q.defer(); if (this.zookeeper) { defer.resolve(this.zookeeper); } //如果正在初始化中, 其他就不要初始化了, 加入队列等待 else if (this.isInitializing) { this.initQueue.push(defer.promise); } return defer.promise; }; 其中this.initQueue.push(defer.promise); 这句代码经测试发现存在问题,你放到queue的是promise, 然后在 this.zookeeper.once('connected', function () { self.initQueue.forEach(function (p) { //从队列中获取, 租个通知 p.resolve(self.zookeeper); }); self.isInitializing = false; console.log('Registry : 已连接上zookeeper'); }); 执行p.resolve(self.zookeeper); promise 此时resolve 是不能执行的,只有defer才能resolve吧?