# on

```ts
function on<T extends EventTarget, K extends EventList<T> | (string & {})>(target: T, name: K): Stream<EventTypeFromEventTarget<T, K>, never>
```

Create a [Stream](https://frontside.com/effection/api/v4/Stream.md) of events from any
[EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget).

See the guide on [Streams and Subscriptions](https://frontside.com/effection/docs/collections)
for details on how to use streams.

### Examples
#### Example 1
```ts
import { each, on, once, spawn } from "effection";

// handle socket errors in a concurrent child task
yield* spawn(function* () {
  throw yield* once(socket, "error");
});

for (let event of yield* each(on(socket, "message"))) {
  console.log(event.data);
  yield* each.next();
}
```

---
### Type Parameters
T extends EventTarget


K extends EventList&lt;T&gt; | string &amp; &#123;&#125;


### Parameters


**target**: T


the event target whose events will be streamed


**name**: K


the name of the event to stream. E.g. "click"
### Return Type


[Stream](https://frontside.com/effection/api/v4/Stream.md)&lt;EventTypeFromEventTarget&lt;T, K&gt;, never&gt;


a stream that will see one item for each event

[View code](https://github.com/thefrontside/effection/tree/effection-v4.2.0/lib/events.ts#L84)
