mirror of
https://github.com/denoland/deno.git
synced 2025-01-18 11:53:59 -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",
|
"let sc = new SuperColor()\n",
|
||||||
"sc"
|
"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": {
|
"metadata": {
|
||||||
|
|
|
@ -551,13 +551,13 @@ async fn get_jupyter_display(
|
||||||
.post_message_with_event_loop(
|
.post_message_with_event_loop(
|
||||||
"Runtime.callFunctionOn",
|
"Runtime.callFunctionOn",
|
||||||
Some(json!({
|
Some(json!({
|
||||||
"functionDeclaration": r#"function (object) {
|
"functionDeclaration": r#"async function (object) {
|
||||||
if (typeof object[Symbol.for("Jupyter.display")] !== "function") {
|
if (typeof object[Symbol.for("Jupyter.display")] !== "function") {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const representation = object[Symbol.for("Jupyter.display")]();
|
const representation = await object[Symbol.for("Jupyter.display")]();
|
||||||
return JSON.stringify(representation);
|
return JSON.stringify(representation);
|
||||||
} catch {
|
} catch {
|
||||||
return null;
|
return null;
|
||||||
|
|
Loading…
Add table
Reference in a new issue