Q没有正确链接

时间:2016-08-22 13:40:54

标签: javascript node.js promise 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;
}

1 个答案:

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