【问题标题】:If a reader.read() Promise rejects/errors, is it safe to reader.read() again?如果 reader.read() Promise 拒绝/错误,再次 reader.read() 是否安全?
【发布时间】:2018-07-14 13:56:46
【问题描述】:

我的问题涉及来自ReadableStreamDefaultReader 的阅读器的错误处理。我猜测来自reader.read() 的 Promise 拒绝通常表示获取请求的网络故障(在这种情况下,我猜想继续阅读是不安全的,我应该完全停止使用该阅读器),但是也许还有其他可能的错误可以安全地继续阅读?

那么在我收到来自reader.read() 的 Promise 拒绝后,在什么情况下我可以继续阅读,在什么情况下我应该完全废弃阅读器?我是否需要反省错误的类型才能做出决定?

【问题讨论】:

  • “保存”是什么意思?什么都不会爆炸?
  • 如果你想做出决定,当然你应该检查错误。
  • 所以我在一个永久循环while (true) 中有const chunk = await reader.read() 调用,只有在遇到chunk.done === true 时才会中断。我不希望无限循环的可能性,所以我想在第一个 reader.read() 拒绝时中断
  • awaited 拒绝的行为就像一个例外——它也会破坏你的循环。您不必为此做任何特别的事情。
  • 很有趣,谢谢!我不知道这种行为。所以我还有一个问题:如果我发现那个异常,我可以继续reader.read() 还是会导致另一个拒绝?我不明白单个 reader.read() 拒绝是否会使整个流无效

标签: javascript fetch-api whatwg-streams-api


【解决方案1】:

流无法从错误中恢复。如果出错,从它读取总是会返回一个被拒绝的 Promise。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2018-10-07
    • 2018-01-27
    • 2016-07-17
    • 2016-09-18
    • 1970-01-01
    相关资源
    最近更新 更多