我试图将承诺链接起来。 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;
}
答案 0 :(得分:0)
如果我理解正确,你想要改为:
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
返回一个承诺。