nodejs が非常に速いことは誰もが知っていますが、なぜそんなに速いのでしょうか?その理由は、node が待機する必要があるイベントを処理するために非同期コールバックを使用するため、コードはどこかで待機することなく実行され続けるからです。ただし、欠点もあります。たとえば、このコールバックを実行した後、次のコールバックを実行する必要があるため、階層がネストされてわかりにくくなります。 . 「コールバック刑務所」に入るのは簡単で、次のような例に簡単につながる可能性があります:
async(1, function(value){ async(value, function(value){ async(value, function(value){ async(value, function(value){ async(value, function(value){ async(value, final); }); }); }); }); });
この書き方は人を崩壊させるでしょう、この問題を解決する方法はありますか、それとも他の方法はありますか?書くことの?答えは「はい」です。es6 の新しい Promise オブジェクトと es7 の async await でこの問題を解決できます。もちろん、Promise オブジェクトについては最初に紹介し、es7 の async await については次の記事で説明します。 Promise オブジェクトについては以下で紹介します。
2. はじめに
Promise は、非同期操作をよりエレガントに、より美しく、読みやすく記述するために使用されるオブジェクトです。名前の通り約束という意味で、Promiseを使用した後は必ず返事をくれる、成功しても失敗しても返事をくれるので逃げ出す心配がない。離れて、ははは。したがって、Promise には保留中 (進行中)、解決済み (完了)、および拒否 (失敗) の 3 つの状態があります。非同期的に返された構造のみがその状態を変更できます。したがって、通常、Promise プロセスは保留中→解決、または保留中→拒否の 2 つだけです。
Promise オブジェクトには、コールバック関数を実行するために使用される、より一般的に使用される then メソッドもあります。1 つは成功した解決されたコールバック、もう 1 つは失敗した拒否されたコールバックです。コールバックパラメータはオプションです。また、then メソッドは、Promise オブジェクトを返すこともできるため、チェーン内で呼び出すことができます。次に、コード:
var Pro = function (time) { //返回一个Promise对象 return new Promise(function (resolve, reject) { console.log('123'); //模拟接口调用 setTimeout(function () { //这里告诉Promise 成功了,然后去执行then方法的第一个函数 resolve('成功返回'); }, time); }) }; (function(){ console.log('start'); Pro(3000) .then(function(data){ console.log(data); return Pro(5000);}) .then(function(data){ console.log(data); console.log('end'); }) })();
上記のコードでは、Pro 変数が定義され、それに匿名関数が割り当てられ、関数は Promise オブジェクトを返し、オブジェクト内の関数を受け取り、resolve と を渡します。メソッドをそれぞれパラメータとして拒否し、setTimeOut を使用して非同期リクエストをシミュレートすると、resolve メソッドの関数が呼び出されます。結果は以下の通りです:
3. Promise api
1、Promise.resolve()
2、Promise.reject()
3、Promise.prototype.then()
4、Promise.prototype.catch ()
5. Promise.all() // すべて完了、
6. Promise.race() // 1 つだけ完了、これは
1 の関数。 () は、オブジェクトが Promise オブジェクトに変換されるようになります。resolvel; Promise.resolve('test')==new Promise(resolve=>resolve('test'))
2。ステータスが拒否された Promise オブジェクト ;
3. then メソッドは上で紹介されているため、ここでは紹介しません。
4. catch(): エラー発生時のコールバック関数。
5. Promise.all() は、すべての結果が完了した後にのみ then() の操作が成功する場合に適しています。例:
let p1 =new Promise(function(resolve,reject){ resolve(1); }); let p2 = new Promise(function(resolve,reject){ resolve(2); }); let p3 = new Promise(function(resolve,reject){ resolve(3); }); Promise.all([p1, p2, p3]).then(function (results) { console.log('success:'+results); }).catch(function(r){ console.log("error"); console.log(r); });
最終出力:
6. Promise.race() の機能は、1 つのインスタンスが状態を変更する限り、Promise は に変更されます。
4. 例
var Pro = function () { //返回一个Promise对象 return new Promise(function (resolve, reject) { //模拟接口调用 setTimeout(function () { resolve(true); }, 1000); }) }; var Pro2 = function () { //返回一个Promise对象 return new Promise(function (resolve, reject) { //模拟接口调用 setTimeout(function () { resolve('Pro2成功执行'); }, 1000); }) }; Pro().then(function(data){ var val = data; console.log(val) if (val) { console.log(1111) return Pro2() } }).then(function(data1){ console.log(data1) })
出力:
このように、then メソッドを使用してチェーン呼び出しを実装できます。
関連する推奨事項:
ES6 Promise 拡張された always メソッド インスタンスの詳細な説明
promsie.all と Promise の逐次実行の詳細な説明
以上がjsでのPromiseインスタンス解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 中国語版
中国語版、とても使いやすい

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
