docs.rodeo

MDN Web Docs mirror

Iterator.prototype[Symbol.dispose]()

The [Symbol.dispose]() method of {{jsxref("Iterator")}}  instances implements the disposable protocol and allows it to be disposed when used with {{jsxref("Statements/using", "using")}} . It calls the return() method of this, if it exists.

Syntax

iterator[Symbol.dispose]()

Parameters

None.

Return value

None ({{jsxref("undefined")}} ).

Examples

Declaring an iterator with using

The Symbol.dispose method is intended to be automatically called in a using declaration. This is useful if you have an iterator that you manually iterate over by calling its next() method; if you iterate it with {{jsxref("Statements/for...of", "for...of")}}  or something similar, then error handling and cleanup is done automatically.

function* generateNumbers() {
  try {
    yield 1;
    yield 2;
    yield 3;
  } finally {
    console.log("Cleaning up");
  }
}

function doSomething() {
  using numbers = generateNumbers();
  const res1 = numbers.next();
  // Not iterating the rest of the numbers
  // Before the function exits, the async iterator is disposed
  // Logs "Cleaning up"
}

doSomething();

Specifications

{{Specifications}} 

Browser compatibility

{{Compat}} 

See also

In this article

View on MDN