(self: Dequeue<A, E>)
| 1496 | * @since 4.0.0 |
| 1497 | */ |
| 1498 | export const peek = <A, E>(self: Dequeue<A, E>): Effect<A, E> => |
| 1499 | internalEffect.suspend(() => { |
| 1500 | if (self.state._tag === "Done") { |
| 1501 | return self.state.exit |
| 1502 | } |
| 1503 | if (self.messages.length > 0 && self.messages.head) { |
| 1504 | return internalEffect.succeed(self.messages.head.array[self.messages.head.offset]) |
| 1505 | } |
| 1506 | return internalEffect.andThen(awaitTake(self), peek(self)) |
| 1507 | }) |
| 1508 | |
| 1509 | /** |
| 1510 | * Attempts to take one message from the queue synchronously. |