promise非同期構造関数
6720 ワード
以下は個人的な理解です.
javascriptサポート
レスリング:解決 => 関数の実行に成功しました
resoliveが実行されるとPromiseはこの時点で関数が実行され成功したことを知っています.resoliveの方法は非同期の方法です. 絶対非同期で実行されます.現在のコードブロックでは
reject: 拒否 => 関数の実行に失敗しました
rejectが実行されるとPromiseはこの時関数の実行が失敗したことを知っています.
複数の非同期時間を実行するなら、一つの関数をカプセル化してもいいです.
then コンストラクタの実例となるオブジェクトmypromise の一つの方法は、プロミセが実行された後に実行されることを解釈して、reloveの中から入ってきたパラメータを受信すると、空ではなく、中にあるコールバック関数を書き込みます.
javascriptサポート
1 let mypromise = new Promise(function(resolve){
2 setTimeout(() => {
3 console.log(" ")
4 resolve()
5 }, 1000);
6 })
7 mypromise.then(function(){
8 setTimeout(() => {
9 console.log(" ")
10 }, 1000);
11 }) //
同期と非同期コードですが、実行中に先に同期コードを実行してから非同期コードを実行します.1 setTimeout(() => {
2 console.log("1")
3 }, 1000);
4 console.log("2")//2 1 ,
プロミスがない前に、非同期コードを実行した後、他の非同期コードを実行し続けるなら、このように書くしかないです.setTimeout(() => {
console.log(" ")
setTimeout(() => {
console.log(" ")
setTimeout(() => {
console.log(" ")
setTimeout(() => {
console.log(" ")
}, 1000);
}, 1000);
}, 1000);
}, 1000);//
上記のコードは長いものを見ています.一つのエラーで、気づきにくいです.もし複数の非同期コードがあれば、ずっと下に積み重ねていくしかないです.読み取り可能性は高くないです.次にプロミセという非同期構造関数が現れて、非同期コードを処理します.以下はプロミセで上記のコードを変えます.let mypromise = new Promise(function(resolve){
setTimeout(() => {
console.log(" ")
resolve()
}, 1000);
})
mypromise.then(function(){
setTimeout(() => {
console.log(" ")
}, 1000);
}) //
上記から私達はPromiseが一つのコールバック関数を受信することを知っています.コールバック関数は二つのパラメータを受信します.レスリング:解決 => 関数の実行に成功しました
resoliveが実行されるとPromiseはこの時点で関数が実行され成功したことを知っています.resoliveの方法は非同期の方法です. 絶対非同期で実行されます.現在のコードブロックでは
reject: 拒否 => 関数の実行に失敗しました
rejectが実行されるとPromiseはこの時関数の実行が失敗したことを知っています.
複数の非同期時間を実行するなら、一つの関数をカプセル化してもいいです.
then コンストラクタの実例となるオブジェクトmypromise の一つの方法は、プロミセが実行された後に実行されることを解釈して、reloveの中から入ってきたパラメータを受信すると、空ではなく、中にあるコールバック関数を書き込みます.
1 function work(item,time){
2 return new Promise(function(resolve,reject){
3 setTimeout(() => {
4 console.log(`${item}`)
5 resolve()
6 }, time);
7
8 })
9 }
10 work(" ",1000).then(function(){
11 return work(" ",1000)
12 }).then(function(){
13 return work(" ",1000)
14 }) //
このように、非同期コードチェーンが現れます. 次に私たちはレスリングを結合します. とreject 一緒に使うfunction rand(){
return new Promise((resolve,reject) =>{
let result = Math.random()
if(result > 0.5)
resolve(result)
else reject(result)
})
}
rand().then(function(result){
console.log(" ")
}).catch(function(result){
console.log(" ")
})