为什么不执行$ q.when()而不传递promise/value?

Bry*_*son 5 javascript promise angularjs q

根据$ q上的Angular文档,$ q.when()需要传入promise /值.

但是我只是遇到了别人的代码而没有传递任何参数.这是我看到的简化版本:

var modal = false;

if (modalOpen) {
    return $q.when()
}
modalOpen = true;

modal = newModal({
    template: opts.template,
});

modal.result.finally(function(){ 
    modalOpen = false;
});
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*aum 7

方法应该同步返回或异步返回以保持一致.如果某个方法有时会同步返回并且仍然希望保留该事实,有时它已经被解析为透明 - 它返回一个空的已解析的promise.拥有有时会返回承诺但有时同步的API会导致麻烦.

使用$q.when是在Angular中获得空解析的承诺的最简单方法.