parent
e04680b0aa
commit
2224610b0b
@ -92,8 +92,7 @@ Renders input as a [Web ReadableStream](https://developer.mozilla.org/en-US/docs
|
|||||||
```ts
|
```ts
|
||||||
function renderToWebStream(
|
function renderToWebStream(
|
||||||
input: App | VNode,
|
input: App | VNode,
|
||||||
context?: SSRContext,
|
context?: SSRContext
|
||||||
Ctor?: { new (): ReadableStream }
|
|
||||||
): ReadableStream
|
): ReadableStream
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -74,9 +74,7 @@ export function renderToSimpleStream<T extends SimpleReadable>(
|
|||||||
|
|
||||||
Promise.resolve(renderComponentVNode(vnode))
|
Promise.resolve(renderComponentVNode(vnode))
|
||||||
.then(buffer => unrollBuffer(buffer, stream))
|
.then(buffer => unrollBuffer(buffer, stream))
|
||||||
.then(() => {
|
.then(() => stream.push(null))
|
||||||
stream.push(null)
|
|
||||||
})
|
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
stream.destroy(error)
|
stream.destroy(error)
|
||||||
})
|
})
|
||||||
@ -180,20 +178,27 @@ export function pipeToWebWritable(
|
|||||||
const writer = writable.getWriter()
|
const writer = writable.getWriter()
|
||||||
const encoder = new TextEncoder()
|
const encoder = new TextEncoder()
|
||||||
|
|
||||||
writer.ready.then(() => {
|
// #4287 CloudFlare workers do not implement `ready` property
|
||||||
renderToSimpleStream(input, context, {
|
let hasReady = false
|
||||||
push(content) {
|
try {
|
||||||
if (content != null) {
|
hasReady = isPromise(writer.ready)
|
||||||
writer.write(encoder.encode(content))
|
} catch (e) {}
|
||||||
} else {
|
|
||||||
writer.close()
|
renderToSimpleStream(input, context, {
|
||||||
}
|
async push(content) {
|
||||||
},
|
if (hasReady) {
|
||||||
destroy(err) {
|
await writer.ready
|
||||||
// TODO better error handling?
|
|
||||||
console.log(err)
|
|
||||||
writer.close()
|
|
||||||
}
|
}
|
||||||
})
|
if (content != null) {
|
||||||
|
return writer.write(encoder.encode(content))
|
||||||
|
} else {
|
||||||
|
return writer.close()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
destroy(err) {
|
||||||
|
// TODO better error handling?
|
||||||
|
console.log(err)
|
||||||
|
writer.close()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user