Javascript 有没有办法调用$q notify而不引起$digest循环?
我有一个应用程序,$digest循环大约需要5毫秒,我正在使用Javascript 有没有办法调用$q notify而不引起$digest循环?,javascript,angularjs,angular-promise,angularjs-digest,Javascript,Angularjs,Angular Promise,Angularjs Digest,我有一个应用程序,$digest循环大约需要5毫秒,我正在使用$q.defer和deferred.notify在我的应用程序中使用很多。问题是,每次调用deferred.notify时,都会安排一个摘要周期,并使其运行5ms 因此,当我从服务器获取数千行数据时(通过WebSocket,数据一行一行地接收),应用程序可以使用100%的CPU,并且变得非常无响应。我处理这些数据的唯一方法就是将它们保存到IndexedDB中 是否有任何方法可以使用$q和notify而不安排$digest循环 我正在考
$q.defer
和deferred.notify
在我的应用程序中使用很多。问题是,每次调用deferred.notify
时,都会安排一个摘要周期,并使其运行5ms
因此,当我从服务器获取数千行数据时(通过WebSocket,数据一行一行地接收),应用程序可以使用100%的CPU,并且变得非常无响应。我处理这些数据的唯一方法就是将它们保存到IndexedDB中
是否有任何方法可以使用$q
和notify
而不安排$digest循环
我正在考虑对WebSocket和IndexedDB相关的代码使用不同的promise实现,但我不喜欢有两个promise实现的想法,而且几乎不可能知道在长链之后会返回哪种promise。我刚刚发现。据我所知,这就是我想要的没有消化周期的$q
不过,这是一项未登记的私人服务。我刚刚发现。据我所知,这就是我想要的没有消化周期的$q
但是,它是一个未记录的私有服务。您可以使用不同的promise实现,或者说,这听起来很像是一项工作。像浏览器本机版本或Bluebird这样的非角度承诺不会在所有通知上触发摘要周期。然后,您只需手动消化内容—我就是这么做的:我使用RxJS处理websocket事件并手动调用作用域。$在需要时偶尔在适当的作用域上应用(如您所示—我不需要在每个websocket事件上更新我的作用域)。您可以使用不同的promise实现,或者说,这听起来很像一份工作。像浏览器本机版本或Bluebird这样的非角度承诺不会在所有通知上触发摘要周期。然后你只需要手动消化东西——我就是这么做的:我使用RxJS来处理websocket事件并手动调用作用域。$在需要时偶尔在适当的作用域上应用(正如你所说的,我不需要在每个websocket事件上更新我的作用域)。RxJS听起来不错。这应该可以解决我对两种不同承诺的担忧。RxJS听起来不错。这应该可以解决我对两种不同承诺的担忧。