没有摘要循环即可兑现承诺

米哈尔·查雷姆扎(Michal Charemza)

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

是否可以在没有运行摘要周期的情况下在Angular中使用Promise?我意识到您可以使用$applyAsync,它稍后安排摘要循环,但是我希望根本不运行摘要循环,并且仍然then运行回调。

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

本杰明·格伦鲍姆(Benjamin Gruenbaum)

否,目前无法执行。每当then处理程序运行时,它都会调度回调$evalAsync,如果尚未安排摘要,则通过回调计划摘要。

例外情况是$timeout,它接受一个额外的参数以不运行摘要。另一方面,在同一摘要中解析的多个promise在同一回合中运行。

您的选择是:-认真地直接使用XMLHttpRequqest-并不难。最大的缺点是,它不会尊重拦截器和其他$ http钩子(例如模拟后端)。-装饰$q不要通过进行调度,$evalAsync或向通过进行调度.thenNoDigest的promise原型添加方法setTimeout-对于$ http或XHR,使用userland承诺库而不是$ q。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章