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
返回一个承诺。