ES 6基礎知識まとめ4-Promise()
9938 ワード
Promiseとは承諾Promise 結果:reolve換金reject拒否 は、thenによってその後catchの捕獲に失敗した 二つの言葉をランダムに出力します.遅延非同期タスクを解決するために、リピートレベルの深度を回避する .
時間ごとに1つの言葉を出力しても、コールバック関数で解決できますが、階層が深すぎて、コールバック地獄を引き起こしやすいです.しかし、Promiseでこの問題を解決できます.は、コールバック関数で解決された です. Promiseで解決します.
var p = new Promise(function(resolve, reject) {
setTimeout(() => {
var n = Math.random();
if (n > 0.5) {
resolve(' ')
} else {
reject(' 40 ')
}
}, 3000)
})
p.then(function(res) {
console.log(res) //
}).catch(err => {
console.error(err) //
})
プロモーションの役割時間ごとに1つの言葉を出力しても、コールバック関数で解決できますが、階層が深すぎて、コールバック地獄を引き起こしやすいです.しかし、Promiseでこの問題を解決できます.
function say(str, time, callback) {
setTimeout(() => {
console.log(str);
if (callback) {
callback();
}
}, time)
}
say(' ', 3000, function() {
say(' ', 5000, function() {
say(' ', 2000)
})
})
上からは、コールバック関数が複数のネストを必要としていることが分かります.出力文が多すぎると、面倒くさいので、階層が多すぎます.function say(str,time){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(str);
},time)
})
}
say(' ',3000)
.then(res=>{
console.log(res);
return say(' ',5000)
})
.then(res=>{
console.log(res);
return say(' ',2000)
})
.then(res=>{
console.log(res);
})
Promiseはこのような問題を解決するために、多層ネスティングを必要とせず、階層的に深い問題を解決した.