先端原理_非同期とシングルスレッド
3558 ワード
単スレッド単スレッドとは? 単スレッドのメリットと発生した問題 単スレッドソリューション シングルスレッド(JSエンジンスレッド)がカード死しないために、「
非同期フロントエンドには、非同期の操作がありますか? 非同期プログラミング処理方式
コールバック関数方式の最大の問題は、の3つの状態 基本的な使い方
1、パラメータ関数の
2、パラメータ関数の内部には、reolve()やreject()の呼び出し方法がない場合、Promiseオブジェクトの状態はそのままです. 例示的な方法
1、レシオ()またはreject()メソッドを呼び出した場合、パラメータが渡されませんでした.すると、then()で伝えられた関数には受信パラメータがありません.
関数が実行されます.例示的な方法 主に処理に用います静的方法 静的方法 await/async
JS非同期実現原理タスク種別
Javascript " "(single thread)
" ", 。
, , , , 。
JS JS (JS , JS )
:
,
:
, , 。
( ), Javascript ( ),
, 。
”この解決策非同期
1、
2、ajax
3、io
:
: , ( )
1、
2、Promise
3、await/async ( )
コールバック関数
(互換性が一番いいですが、おすすめできません.)コールバック関数方式の最大の問題は、
コール地獄はコードの読み取りが悪く、プロジェクトの保守性が悪いことです.setTimeout(function (name) {
var catList = name + ',';
setTimeout(function (name) {
catList += name + ',';
setTimeout(function (name) {
catList += name + ',';
}, 1, 'Lynx');
}, 1, 'Jaguar');
}, 1, 'Panther');
, ,
PromiseES6
、主に解決のためです.
問題1、pending: , then()
2、resolved:
3、rejected:
Promise ,
:
const p = new Promise((resolve, reject)=>{ });
const p = new Promise(function(resolve, reject){})
注意:1、パラメータ関数の
はすぐ実行します.
の2、パラメータ関数の内部には、reolve()やreject()の呼び出し方法がない場合、Promiseオブジェクトの状態はそのままです.
pending
、後ろthen()
3、参考関数の関数体内には、主には
4、参関数の関数体内で、 resolve()
、Promiseの例の状態は pending resolved
5、参関数の関数の体内で、 reject()
、Promiseの例の状態は pending rejected
6、reolve()またはreject()は、一つのパラメータしか伝えられません.then
:
const p = new Promise((resolve, reject)=>{ });
p.then(data=>{ }).then(data=>{ })
then :
Promise , then() Promise
1、p resolved ,then , :
const pp = p.then(data=>{
console.log('go');
});
pp p resolved, undefined
2、p resolved ,then , Promise :
const pp = p.then(data=>{
return ' ';
});
pp p resolved, ' '
3、p resolved ,then , Promise :
const pp = p.then(data=>{
return new Promise((resolve, reject)=>{
reject();
});
});
pp rejected( ), undefined
4、p rejected ,then :
const pp = p.then(data=>{ });
pp p rejected, p
注意:1、レシオ()またはreject()メソッドを呼び出した場合、パラメータが渡されませんでした.すると、then()で伝えられた関数には受信パラメータがありません.
data undefined
2、Promise状態が違う限りpending
、じゃ、thenで伝えます.関数が実行されます.
3、then()を呼び出した場合、パラメータとして関数を伝えない限り、 Promise , ,
catch
rejected
の.catch(error=>{ }) then
then(null, error=>{ }) then(undefined, error=>{ })
catch :
Promise , then
, rejected, undefined
all
Promise , Promise , Promise
race
ES7
(強く推奨)JS非同期実現原理
JS ( JS ),