Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法调用$q notify而不引起$digest循环?_Javascript_Angularjs_Angular Promise_Angularjs Digest - Fatal编程技术网

Javascript 有没有办法调用$q notify而不引起$digest循环?

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循环 我正在考

我有一个应用程序,$digest循环大约需要5毫秒,我正在使用
$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听起来不错。这应该可以解决我对两种不同承诺的担忧。