JavaScriptでは、すべてのコードは、シングルスレッドの実行です。
ブラウザが約束をサポートしているかどうか1.テスト
「厳格な使用」;
新しいプロミス(関数(){});
console.log( '支援の約束!');
2。
<! - Axiosは、ブラウザを使用することができ、HTTPライブラリの約束に基づいて でとのNode.jsを- > < スクリプトSRC =「https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.0 /axios.min.js " > </ スクリプト> < スクリプト> letのユーザー名; constのusersPromise = axios.get(' https://api.github.com/users ' ) // イベントのリスニング usersPromise.then(REPONSE => { // にconsole.log(REPONSE); ユーザ名= reponse.data [ 0 ]の.login; //バックプロミス 戻りaxios.get( `HTTPS:// api.github.com/users /} $ {ユーザー名/ repos`); })を(REPONSE。=> { にconsole.log(reponse.data); }) / / リスニングエラーがキャッチを生じ 。キャッチ(ERR => { console.error(ERR) }) </ スクリプト>
内部REPONSEデータ
3.実践規範
(1)約束の成功事例は、(パラメータ名を変更する)reslove
// reslove着信データが正常 // それが情報を返すことに失敗した場合拒否 CONST = P 新しい新しいプロミス((reslove、リジェクト)=> { たsetTimeout(() => { reslove( 'この成功は' ) }、 2000 )。 }) p.then(データ => { // 成功情報 にconsole.log(データ); })
(2)約束の失敗は、(パラメータ名を変更するために)拒否します
// reslove着信データ成功 // それは情報が拒否返すために失敗した場合 CONST = P 新しい新しいプロミス((reslove、リジェクト)=> { たsetTimeout(() => { (拒否 'される。この成功' ) }、 2000 )。 }) p.then(データ => { にconsole.log(データ); 。})キャッチ(ERR => { // 故障情報 console.error(ERR); })
複数のを使用して4.約束
Promise.all(反復可能)メソッドは、インスタンスプロミスを返します
すべては、完成された反復可能なパラメータの約束の成功コールバック内にあるコールバックインスタンス障害ので、失敗した約束のパラメータがある場合。コード内でキャッチを見つけるに失敗
Promise.raceは(反復可能)メソッドは、イテレータ一度約束を解決したり、解決したり拒否されます約束に戻ることを拒否し、約束を返します。ヒント:という、タイマーの時間に注意してください。
CONST usersPromise =新しいプロミス((解決、リジェクト)=> {
setTimeout(()=> {
解決([ 'mojombo'、 'vanpelt'、 'wycats'])。
}、2000)。
});
CONST moviePromise =新しいプロミス((解決、リジェクト)=> {
setTimeout(()=> {
//決意({名: 'それをお父さんをレスリング!'、評価:9.2、年:2019});
拒否(エラー( 'いいえmoviePromise'))
}、500)。
});
// Promise.all([usersPromise、moviePromise])
Promise.race([usersPromise、moviePromise])
.then(応答=> {
//解体割り当て
constの[ユーザー、映画] =応答;
console.log(ユーザー);
console.log(映画);
})
.catch(ERR => {
console.error(ERR)。
})