AngularJS承诺似乎与摘要循环相关,因为在运行摘要循环之前,不会调用成功/错误回调。这意味着使用承诺的任何内容(例如$http
或手动创建的承诺)也都需要触发摘要循环才能使回调运行。
是否可以在没有运行摘要周期的情况下在Angular中使用Promise?我意识到您可以使用$applyAsync
,它稍后安排摘要循环,但是我希望根本不运行摘要循环,并且仍然then
运行回调。
本质上,我正在尝试找出如何从应用程序中获得尽可能多的性能,该应用程序将使用相当多的异步行为,这需要解决承诺,但不一定要运行摘要循环。
否,目前无法执行。每当then
处理程序运行时,它都会调度回调$evalAsync
,如果尚未安排摘要,则通过该回调计划摘要。
例外情况是$timeout
,它接受一个额外的参数以不运行摘要。另一方面,在同一摘要中解析的多个promise在同一回合中运行。
您的选择是:-认真地直接使用XMLHttpRequqest-并不难。最大的缺点是,它不会尊重拦截器和其他$ http钩子(例如模拟后端)。-装饰$q
不要通过进行调度,$evalAsync
或向通过进行调度.thenNoDigest
的promise原型添加方法setTimeout
。-对于$ http或XHR,使用userland承诺库而不是$ q。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句