質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

962閲覧

Promiseの中身をディベロッパーツールではなく、画面に表示させたいです

akirabrian67

総合スコア11

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/11/10 07:07

前提・実現したいこと

eelを用いてHTMLとJavascriptで任意の文字、数字をブラウザ表示させたいのですが、Promiseによって阻まれています。

ディベロッパーツール上では
Promise {<pending>}
[[PromiseState]]:"fulfilled"
[[PromiseResult]]: 2
と表示されております。

似たような質問をされている方がいて、その返答ではこのような自分のやろうとしていることは難しいという風におっしゃっていました。

発生している問題・エラーメッセージ

該当部には[Object Promise]と表示されています。またディベロッパーツールのConsole上には本来表示させたい値が出ています。

該当のソースコード

Python

1import eel 2 3def main(): 4 eel.init("web") 5 eel.start("production.html") 6 7@eel.expose 8def gp(): 9 a = 1 + 1 10 print(a) 11 return a 12 13@eel.expose 14def gp2(a): 15 print(a) 16 return "ブラウザ" 17 18if __name__ == '__main__': 19 main() 20

HTML

1<html> 2<head> 3 <meta charset="UTF-8"> 4 <title>Production Monitor</title> 5 <script type="text/javascript" src="/eel.js"></script> 6 <script type="text/javascript"> 7 8 9 10 function gp(){ 11 let aaa = eel.gp()(); 12 alert(aaa); 13 } 14 15 16 async function gp2(){ 17 let val = await eel.gp2("コマンドプロンプト")(); 18 alert(val); 19 } 20 21 function gp1(){ 22 let bbb = eel.gp()(); 23 return bbb 24 } 25 26 new Promise(function(resolve, reject) { 27 resolve('成功'); 28 }); 29 30 new Promise(function(resolve, reject) { 31 reject('失敗'); 32 }); 33 34 35 </script> 36</head> 37<body> 38 <a href="#" onclick="gp()">link1</a> 39 <br> 40 <a href="#" onclick="gp2()">link2</a> 41 <br> 42 <div> 43 <script> 44 let a = gp1(); 45 document.write(a); 46 </script> 47 48 </div> 49</body> 50</html>

試したこと

関数についていた、asyncとawaitを消しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/11/10 07:28 編集

eel.jsとpromiseの問題切り分けられるなら分けたほうがよいかもしれません promiseだけの話であればasync/awaitで値を得るよう調整できるはずです 追記:質問の意味を曲解してたようです promiseをプロミスとしてブラウザで処理するのは厳しそうですね・・・
guest

回答1

0

ベストアンサー

document.writeでは不可能です(同期的に実行する必要があります)。

言い方を変えれば、document.writeを使うことが適切ではないのです。Promiseからthenしたコールバックの中で、textContentなど適当な方法でHTMLを書き換えて出力してください。

投稿2020/11/10 07:14

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/11/10 07:18

document.writeは、PromiseやDOMを駆使するような現代JavaScriptには全くマッチしません。「JavaScriptのPolyfillコードを同期的に書き出したい」というような、特別な意図がある場面以外では使うべきではないメソッドです。
akirabrian67

2020/12/01 09:05

ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問