mirror of
https://github.com/denoland/deno.git
synced 2024-12-31 11:34:15 -05:00
feat(unstable): Await return from Jupyter.display
(#20807)
Allows `Jupyter.display` to return a promise. Example: ```javascript class WikiPage { constructor(public name) {} async [Symbol.for("Jupyter.display")]() { let response = await fetch("https://en.wikipedia.org/wiki/" + this.name); return { "text/html": await response.text() } } } new WikiPage("Deno_(software)") ```
This commit is contained in:
parent
ceecd8c495
commit
48bb3b2b0f
2 changed files with 40 additions and 3 deletions
|
@ -827,6 +827,43 @@
|
|||
"let sc = new SuperColor()\n",
|
||||
"sc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 27,
|
||||
"id": "c1296291-a3e8-457b-8329-6cc58a1e528a",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div style=\"width: 32px; height: 32px; background-color: #239814\" />"
|
||||
]
|
||||
},
|
||||
"execution_count": 27,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"class SuperColorAsync {\n",
|
||||
" constructor() {\n",
|
||||
" this.color = \"#239814\"\n",
|
||||
" }\n",
|
||||
" hex() {\n",
|
||||
" return this.color\n",
|
||||
" }\n",
|
||||
" \n",
|
||||
" async [Symbol.for(\"Jupyter.display\")]() {\n",
|
||||
" return {\n",
|
||||
" \"text/html\": `<div style=\"width: 32px; height: 32px; background-color: ${this.hex()}\" />`\n",
|
||||
" }\n",
|
||||
" }\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"let sc = new SuperColorAsync()\n",
|
||||
"sc"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
|
|
@ -551,13 +551,13 @@ async fn get_jupyter_display(
|
|||
.post_message_with_event_loop(
|
||||
"Runtime.callFunctionOn",
|
||||
Some(json!({
|
||||
"functionDeclaration": r#"function (object) {
|
||||
"functionDeclaration": r#"async function (object) {
|
||||
if (typeof object[Symbol.for("Jupyter.display")] !== "function") {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
const representation = object[Symbol.for("Jupyter.display")]();
|
||||
const representation = await object[Symbol.for("Jupyter.display")]();
|
||||
return JSON.stringify(representation);
|
||||
} catch {
|
||||
return null;
|
||||
|
|
Loading…
Reference in a new issue