Q不能正确链接

我尝试链接承诺。 下面的getExternalMap()返回一个promise(处理ajax call => deferred.resolve()并返回deferred.promise)。 “第一链”被称为没有问题,但“二链”不叫,为什么?

我认为这是写得很好,但不是,我也找不到为什么。

var self = this; getExternalMap().then(function() { console.log("First chaining"); var parsedMap = self.destinationsApiParser.getSortDestinations(); return self.initProxies(parsedMap); }).then(function() { console.log('second chaining'); }); this.initProxies = function(parsedMap) { var deferred = Q.defer(); var destinationsApiProxy = new DestinationsApiProxy(this.app, parsedMap); deferred.resolve(); return deferred.promise; } 

如果我的理解正确,你想这样做,而不是:

 var self = this; getExternalMap() .then(() => console.log("1st chaining")) .then(self.destinationsAPIParser.getSortDestinations) .then(self.initProxies) .then(() => console.log("2nd chaining")) this.initProxies = function(parsedMap) { var deferred = Q.defer(); var destinationsApiProxy = new DestinationsApiProxy(this.app, parsedMap); deferred.resolve(); return deferred.promise; } 

假设self.destinationsAPIParser.getSortDestinations返回一个承诺。