菜单
开源

releaseLock()

ReadableStreamDefaultReader 接口的 releaseLock() 方法释放读取器对流的锁定。

如果在释放锁定时关联的流发生错误,则读取器也会发生错误。当您使用完流并希望释放其锁定时,此方法非常有用。

如果在待处理的读取操作仍在进行时释放读取器的锁,则读取器的 ReadableStreamDefaultReader.read() 调用将立即被拒绝,并抛出 TypeError

异常

异常描述
TypeError当源对象不是 ReadableStreamDefaultReader 时抛出

示例

JavaScript
import { ReadableStream } from 'k6/experimental/streams';
import { setTimeout } from 'k6/timers';

export default async function () {
  // Define a number stream that emits numbers from 1 to 10 every second
  const stream = numbersStream();

  // We use the getReader method to create a reader and lock the stream to it
  const reader = stream.getReader();

  while (true) {
    const { done, value } = await reader.read();
    if (done) break;
  }

  // Release the lock on the stream, so we're free to obtain another reader
  // and read from the stream again
  reader.releaseLock();
}

function numbersStream() {
  let currentNumber = 0;

  return new ReadableStream({
    start(controller) {
      const fn = () => {
        if (currentNumber < 10) {
          controller.enqueue(++currentNumber);
          setTimeout(fn, 1000);
          return;
        }

        controller.close();
      };
      setTimeout(fn, 1000);
    },
  });
}