为什么Q的thenResolve方法返回undefined?

时间:2013-11-06 15:00:46

标签: breeze promise q

为什么thenResolve没有像我期望的那样工作?

我在javascript模块中有一个方法:

function addVisit(companyId) {
    var  newVisit;

    return getInventoryItems()
        .then(function(data) {
            newVisit = createVisit(companyId, data);
        })
        .then(function() {
            breezeVisitsManager.saveChanges();
        })
        .thenResolve(newVisit);
}

由另一个模块调用:

visitRepository.addVisit(self.companyId)
    .then(function(newVisit) {
        var route = self.visitRoute(newVisit.VisitId());
        router.navigate(route);
     }

newVisit当时存在thenResolve被调用,但是当调用代码接收它时它是未定义的。我玩过sample JSFiddle并且我不明白为什么我的代码无效。

1 个答案:

答案 0 :(得分:4)

在您将newVisit传递给undefined时(在调用addVisit时立即),{p> .thenResolvefunction addVisit(companyId) { var newVisit; return getInventoryItems() .then(function(data) { newVisit = createVisit(companyId, data); }) .then(function() { breezeVisitsManager.saveChanges(); }) .then(function(){ return newVisit; }); }

a.b.c()

承诺不会更改语言,c()无论如何都会立即调用{{1}}。