プロミスとは
- 簡単に言えば、Promiseは非同期プログラミングのソリューションです。
なぜ約束があるのですか?
まず、非同期と同期とは何かを理解しましょう。
- 同期:レストランに行き、場所を見つけてウェイターに電話するとします。このとき、ウェイターは「同期」ウェイターであると申し訳ありません。このテーブルを提供した後にのみ挨拶します。そのテーブルのゲストは明らかにすでに食べており、メニューなどの小さなアクションが必要ですが、ウェイターは、他の誰かの大きなアクションが完了するまで待ってから、再び挨拶するように求めています。これは同期の問題です。つまり、「注文」1234で納品された作業は、1234の注文で完了する必要があります。
- 非同期:Aによって提供された時間のかかる作業をシステムに引き渡した後、Bによって提供された作業を続行します。システムが前の作業を完了した後、コールバックまたはイベントを介してAの残りの作業を続行できます。
ABの作業の完了順序は、それらの配信順序とは関係がないため、「非同期」と呼ばれます。
使用する
Promise:非同期リクエストを行う場合、
Promiseは内部的にカプセル化されたクラスです。そのコンストラクターは新しいときに実行されます(1.状態情報を保存します。2。渡した関数を実行します)。
着信コールバック関数を実行すると、2つ渡されます。パラメータ、解決および拒否、それ自体が関数です
new Promise((resolve,reject)=>{
//模拟异步请求
setTimeout(() => {
//执行成功时调用resolve
resolve();
//执行失败时调用reject
reject();
}, 3000);
}).then(()=>{
//执行resolve时会来到then
console.log('hello');
}).catch(()=>{
//执行失败会来到catch
console.log('error')
})
非同期リクエストが成功または失敗したときにパラメータを渡すことができます。これは、ネットワークリクエストを行うときに取得したデータをさらに処理することと同じです。
new Promise((resolve,reject)=>{
setTimeout(() => {
//执行成功时调用resolve
resolve('执行成功');//resolve中传入的参数对应到then中回调函数中的参数
}, 3000);
}).then((data)=>{
//执行resolve时会来到then
console.log(data);
})