javascript - 在没有摘要循环的情况下解决 promise

标签 javascript angularjs performance angular-promise angularjs-digest

AngularJS promises 似乎与摘要循环相关联,因为在摘要循环运行之前不会调用成功/错误回调。这意味着任何使用 promises 的东西,例如 $http 或手动创建的 promises,也需要触发一个摘要循环才能运行回调。

是否可以在 Angular 中使用 promise ,而根本不运行摘要循环?我知道你可以使用 $applyAsync,它将摘要周期安排得晚一点,但我希望根本不运行摘要周期,并且仍然有 then 回调运行。

从本质上讲,我正在尝试找出如何从使用相当多的异步行为的应用程序中获得尽可能多的性能,这些异步行为需要解决 promises 但不一定要运行摘要循环。

最佳答案

不,目前不可能。每当一个then处理程序运行它通过 $evalAsync 安排回调如果尚未安排摘要,则安排摘要。

异常(exception)情况是 $timeout接受一个不运行摘要的额外参数。另一方面 - 在同一个回合中解决的多个 promise 在同一个摘要上运行。

您的选择是: - 认真地直接使用 XMLHttpRequqest - 这不是很难。最大的缺点是它不会尊重拦截器和其他 $http Hook (如模拟后端)。 - 装饰$q不通过 $evalAsync 安排或添加 .thenNoDigest通过 setTimeout 调度的 promise 原型(prototype)的方法. - 使用用户态 promise 库而不是 $q 用于 $http 或 XHR。

关于javascript - 在没有摘要循环的情况下解决 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29428629/

相关文章:

javascript - 如果没有解析选项,Angularjs ui 引导模式将无法工作

javascript - Angular ng-click 不适用于 ng-show

c++ - 在 Mac 上使用 Clang/LLVM 加速和优化 C++ 程序

performance - SQL Developer 文件打开和导出显示对话框非常慢

javascript - CSS - 当 Button 平行于按钮右边框延伸时让文本从左边开始

javascript - If else 语句不适用于待办事项列表

javascript - 将文本添加到圆环图 - ChartJS

javascript - 删除按钮不起作用

python - 比较反向双端队列中的邻居

javascript - 两次包含同一个 JavaScript 库有什么危险?