javascript - 你为什么要执行 $q.when() 而不给它传递一个 promise /值?

标签 javascript angularjs promise q

根据 the Angular docs on $q , $q.when() 期望传递一个 promise /值。

但我只是遇到了别人的代码,其中调用它时没有传递任何参数。这是我所看到的简化版本:

var modal = false;

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

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

modal.result.finally(function(){ 
    modalOpen = false;
});
}

最佳答案

方法应该同步返回或异步返回以保持一致。如果一个方法有时同步返回并且有时仍然想保持事实它已经解析透明 - 它返回一个空的已解析 promise 。拥有有时返回 promise 有时同步返回 promise 的 API 是一个 recipe for trouble .

使用 $q.when 是在 Angular 中获得空的 resolved promise 的最简单方法。

关于javascript - 你为什么要执行 $q.when() 而不给它传递一个 promise /值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25648367/

相关文章:

javascript - Highcharts(仪表)和 Highstock 与 Meteor 位于同一页面

javascript - 如何从 Angular 表单返回 Django?

javascript - 在 $state.go 之后执行 $window.location.reload(true)

node.js - 如何处理nodeJS/express中的promise错误

javascript - 无法从异步 Promise 执行器函数中抛出错误

javascript - 有什么方法可以将一个辅助函数的返回值作为 Handlebars 中的参数传递给另一个辅助函数

javascript - 使用 HTML5 将两个 Canvas 方 block 设置到 Canvas 的中心

javascript - C3 图加载回调

angularjs - $ 未定义 - jquery Angular 混合

javascript - 如何在刚刚通过 Dexie.js 打开 indexedDB 后获取表?