私はリンクhttps://developer.mozilla.org/en-US/Add-ons/WebExtensions/Your_second_WebExtensionを経由していました。 choose_beast.jsスクリプトでキーワードthen()を理解できませんでした。私はそれが何かjavascriptの約束に関連していることを知っています。この文脈で、簡単な言葉の約束とその使用について説明できますか?非同期プロミスと()
-1
A
答えて
0
同期コードと非同期コードを比較しましょう。
let a = someAsyncFuntion();
let b = a * 3; // runs into error
:通常の同期コードを見
:b
が設定され、それが非同期コードを見
を使用する次のラインのために利用可能である前
let a = Date.now();
let b = a * 3;
a
が設定されています
a
は、b
が設定される前に設定されておらず、次の行には使用できません。 eが使用されるため、エラーになります。
someAsyncFuntion()
は、次のプロセスが利用可能なときに実行されるようにキューに入れられます。パーサーはlet b = a * 3;
に移動しますが、ここではa
はまだ設定されていないため、エラーが発生します。
簡単な言葉では、プロミスでは、関数は非同期に実行されるようにキューに入れられます。したがって、それが終わったらthen()
です。上記のページの例を見てみると
:
var gettingActiveTab = browser.tabs.query({active: true, currentWindow: true});
gettingActiveTab.then((tabs) => { browser.tabs.sendMessage(tabs[0].id, {beastURL: chosenBeastURL}); });
browser.tabs.query()
はすぐに実行しないと、すぐに結果を得ることはありません。したがって、結果が得られたらthen()
何かを行うようにコードを記述します。
// query tabs asynchronously
var gettingActiveTab = browser.tabs.query({.....});
// once got the result THEN do something
gettingActiveTab.then(/* do something */);
私は助けてくれることを望みます。
関連する問題
- 1. 非同期にプロミスを解決する
- 2. プロミスと非同期エンドレスループを持つ方法
- 3. プロミス内で非同期機能をアサートする方法は?
- 4. 非同期操作と非同期ネットワークタスク?
- 5. 非同期ソケットと同期
- 6. トーストと非同期
- 7. 同期と非同期のアクティビティ
- 8. 非同期ソケットと同期ソケット
- 9. RxJSとの非同期アクションの同期
- 10. 非同期ループ内の非同期メソッド
- 11. 春非同期 - 非同期豆に
- 12. 非同期メソッドの非同期メソッド
- 13. 非同期メソッド非同期に新
- 14. 非同期、非同期待機
- 15. 非同期イベントの同期
- 16. 非同期/同期ループNode.js
- 17. リクエストレスポンモデル/同期/非同期/イベントドリブン
- 18. WCF非同期サービスと非同期クライアントの契約
- 19. EHsc vc EHa(非同期と非同期の例外処理)
- 20. 非同期非公開と非同期非同期の違いは何ですか?
- 21. NSAutoReleasePoolと非同期関数
- 22. 非同期とGoogleマップ
- 23. リアクションルートとRedux非同期データリクエスト
- 24. 非同期トリガーとトリガー
- 25. ExecutorServiceと非同期アノテーション
- 26. C#5と非同期タイマー
- 27. 非同期スレッドとセッション
- 28. MVVMと非同期データアクセス
- 29. Boost.asioと非同期チェーン、unique_ptr?
- 30. 非同期パイプとngrxストア
https://developers.google.com/web/fundamentals/getting-started/primers/promises https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise –
私はすでにそれを読んだことがありますが、簡単に理解できませんでした。 –
関連:[私の変数は、関数内で変更した後に変更されないのはなぜですか? - 非同期コードリファレンス](https://stackoverflow.com/q/23667086) – Makyen