0

为什么没有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 被调用时存在,但在调用代码接收到它时它是未定义的。我玩过示例 JSFiddle,但我不明白为什么我的代码不起作用。

4

1 回答 1

4

newVisitundefined在您将其传递给.thenResolve时(立即调用 addVisit 时)。

function addVisit(companyId) {
    var  newVisit;

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

Promise 不会改变语言,无论如何a.b.c()都会立即调用c()

于 2013-11-06T18:54:21.297 回答