当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

until-destroy

授权协议 MIT License
开发语言 JavaScript
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 不详
投 递 者 钱选
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

�� Unsubscribe For Pros

A neat way to unsubscribe from observables when the component destroyed

@ngneat/until-destroy

Table of contents

Angular 10 Compatibility

@ngneat/until-destroy@8+ is compatible only with Angular starting from 10.0.5 version. @ngneat/until-destroy@7 is compatible with Angular versions below 10.0.5. If you have noticed that unsubscribing does not work after some update then check the version of Angular and @ngneat/until-destroy first of all.

Use with Ivy

npm install @ngneat/until-destroy
# Or if you use yarn
yarn add @ngneat/until-destroy
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';

@UntilDestroy()
@Component({})
export class InboxComponent {
  ngOnInit() {
    interval(1000)
      .pipe(untilDestroyed(this))
      .subscribe();
  }
}

You can set the checkProperties option to true if you want to unsubscribe from subscriptions properties automatically:

@UntilDestroy({ checkProperties: true })
@Component({})
export class HomeComponent {
  // We'll dispose it on destroy
  subscription = fromEvent(document, 'mousemove').subscribe();
}

You can set the arrayName property if you want to unsubscribe from each subscription in the specified array.

@UntilDestroy({ arrayName: 'subscriptions' })
@Component({})
export class HomeComponent {
  subscriptions = [
    fromEvent(document, 'click').subscribe(),
    fromEvent(document, 'mousemove').subscribe()
  ];

  // You can still use the operator
  ngOnInit() {
    interval(1000).pipe(untilDestroyed(this));
  }
}

You can set the blackList property if you don't want to unsubscribe from one or more subscriptions.

@UntilDestroy({ checkProperties: true, blackList: ['subscription1'] })
@Component({})
export class HomeComponent {
  // subscription1 will not be unsubscribed upon component destruction
  subscription1: Subscription;
  // subscription2 will be unsubscribed upon component destruction
  subscription2: Subscription;

  constructor() {
    this.subscription1 = new Subject().subscribe();
    this.subscription2 = new Subject().subscribe();
  }
}

Use with Non-Singleton Services

@UntilDestroy()
@Injectable()
export class InboxService {
  constructor() {
    interval(1000)
      .pipe(untilDestroyed(this))
      .subscribe();
  }
}

@Component({
  providers: [InboxService]
})
export class InboxComponent {
  constructor(inboxService: InboxService) {}
}

All options, described above, are also applicable to providers.

Use with View Engine (Pre Ivy)

npm install ngx-take-until-destroy
# Or if you use yarn
yarn add ngx-take-until-destroy
import { untilDestroyed } from 'ngx-take-until-destroy';

@Component({})
export class InboxComponent implements OnDestroy {
  ngOnInit() {
    interval(1000)
      .pipe(untilDestroyed(this))
      .subscribe(val => console.log(val));
  }

  // This method must be present, even if empty.
  ngOnDestroy() {
    // To protect you, we'll throw an error if it doesn't exist.
  }
}

Use with Any Class

import { untilDestroyed } from 'ngx-take-until-destroy';

export class Widget {
  constructor() {
    interval(1000)
      .pipe(untilDestroyed(this, 'destroy'))
      .subscribe(console.log);
  }

  // The name needs to be the same as the second parameter
  destroy() {}
}

Migration from View Engine to Ivy

To make it easier for you to migrate, we've built a script that will update the imports path and add the decorator for you. The script is shipped as a separate package. Run the following command to install it:

npm i --save-dev @ngneat/until-destroy-migration
# Or if you use yarn
yarn add -D @ngneat/until-destroy-migration

Then run the following command:

npx @ngneat/until-destroy-migration --base my/path

base defaults to ./src/app.

You can use the --removeOnDestroy flag for empty OnDestroy methods removing.

npx @ngneat/until-destroy-migration --removeOnDestroy

You can remove the package once the migration is done.

Potential Pitfalls

  • The order of decorators is important, make sure to put @UntilDestroy() before the @Component() decorator.
  • When using overrideComponent in unit tests remember that it overrides metadata and component definition. Invoke UntilDestroy()(YourComponent); to reapply the decorator. See here for an example.

ESLint Rules

Contributors

Thanks goes to these wonderful people (emoji key):


Netanel Basal

�� �� ��

Artur Androsovych

�� �� �� ��

Krzysztof Karol

��

Alex Malkevich

��

Khaled Shaaban

��

kmathy

��

Dmitrii Korostelev

��

This project follows the all-contributors specification. Contributions of any kind welcome!

  • Java Thread destroy()方法 java.lang.Thread.destroy() 方法用于销毁线程组及其所有子组。线程组必须为空,表示该线程组中的所有线程此后都已停止。 1 语法 public void destroy() 2 参数 无 3 返回值 无 4 示例 package com.yiidian; /** * 一点教程网: http://www.yiidian.com *

  • 目录 一、线程的属性----分离属性(attr->attribute) 1.什么是分离属性? 2.如何创建分离属性的线程? -> pthread_attr_setdetachstate()  -> man 3 方法一:添加一个分离属性到一个属性变量中,然后使用属性变量去创建一个线程,那么创建出来的线程就是具有分离属性的线程。 练习1: 验证一个分离属性的线程退出,主线程还可不可以去接合(阻塞等待回

  • I am in the process of learning tkinter on Python 3.X. I am writing a simple program which will get one or more balls (tkinter ovals) bouncing round a rectangular court (tkinter root window with a can

  • Unity中的Destroy和null 问题 Unity中,我们经常需要销毁物体,Unity也给我们提供了销毁的API。 Destroy( )和 DestroyImmediate( ); 这两种都可以进行销毁,但是还是有一定的区别,同时还是要注意使用的坑点。 在QQ群看到,好多人还是对这些不太清楚,所以花时间来重新学习和验证一下。 官方API文档 Destroy https://docs.unit

  • static function Destroy (obj : Object, t : float = 0.0F) : void Description描述 Removes a gameobject, component or asset. 删除一个游戏物体,组件或者资源。 The object obj will be destroyed now or if a time is specified

  • 1.信号量使用场合 我理解的信号量使用场合 当两个进程(线程)通信时,一个进程(线程)需要读操作,一个进程(线程)需要写操作, 在这种情况下,当出现同一时刻有多个进程(线程)对共享内存进行读写时,会出现数据损坏或丢失,此种情况下使用信号量就可以起到保护作用。 实现方式:是一种类似锁的机制,几个进程(线程)间都可以通过获取到同一个信号量的值,判断临界资源是否被信号量“锁住”,此时能否读取。 2.PO

  • Java ThreadGroup destroy()方法 java.lang.ThreadGroup.destroy() 方法破坏该线程组及其所有子组。此线程组必须为空,表明已被该线程组中的所有线程都停止。 1 语法 public final void destroy() 2 参数 filename : 这是加载文件。 3 返回值 此方法不返回任何值。 4 示例 package com.yiidi

  • currProcess=currRuntime.exec(cmd); 这个返回一个process对象 destroy,exitValue,waitFor 有三个方法 看官方文档 waitFor public abstract int waitFor() throws InterruptedException Causes the current thread to wait, if necessa

  • sem_init SEM_INIT(3) Linux Programmer's Manual SEM_INIT(3) NAME sem_init - init

 相关资料
  • 根据条件判断是否继续执行 Loop 或 For 循环。 Loop { ... } Until Expression 参数 Expression 任何有效的 表达式. 备注 在每次重复执行后都会计算一次表达式, 即使使用了 continue 也会进行计算. 如果表达式计算结果为 false (即为空字符串或数值 0), 循环继续; 否则循环被打破且跳到 Until 之后一行执行. Loop

  • 只要给定条件为假,Perl编程语言中的until循环语句就会重复执行目标语句。 语法 (Syntax) Perl编程语言中的until循环语法是 - until(condition) { statement(s); } 这里的statement(s)可以是单个陈述或一个陈述块。 condition可以是任何表达。 循环迭代直到条件变为真。 当条件变为真时,程序控制传递到循环之后的行。 数字

  • loop...until循环类似于while循环,除了循环...直到循环保证至少执行一次。 语法 (Syntax) 循环的语法......直到如下 - loop do -- Statements to be executed. until expression 请注意,表达式出现在循环的末尾,因此循环中的语句在测试表达式的值之前执行一次。 如果表达式返回true,则控制流跳回来执行,循环中

  • 与在循环顶部测试循环条件的for和while循环不同,Pascal中的repeat ... until循环检查循环底部的条件。 重复...直到循环类似于while循环,除了重复... until循环保证至少执行一次。 语法 (Syntax) repeat S1; S2; ... ... Sn; until condition; 例如, repeat sum :

  • do-until循环是do while循环的轻微变化。 当被评估的条件为假时,该循环在退出的事实中变化。 语法 (Syntax) do-until语句的语法如下 - do until (condition) statement #1 statement #2 ... end do-until语句与事实中的do-while语句不同,它只会在条件评估为真之前执行语句。 如果

  • 当我们想要重复一组语句时,只要条件为假,就使用Do…Until循环。 可以在循环开始时或循环结束时检查条件。 语法 (Syntax) 以下是VBA中Do..Until循环的语法。 Do Until condition [statement 1] [statement 2] ... [statement n] [Exit Do] [statement 1]