ES 6基礎知識まとめ4-Promise()

9938 ワード

Promiseとは
  • 承諾Promise
  • 結果:reolve換金reject拒否
  • は、thenによってその後catchの捕獲に失敗した
  • 二つの言葉をランダムに出力します.
    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)
    				})
    			})
    
    上からは、コールバック関数が複数のネストを必要としていることが分かります.出力文が多すぎると、面倒くさいので、階層が多すぎます.
  • Promiseで解決します.
    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はこのような問題を解決するために、多層ネスティングを必要とせず、階層的に深い問題を解決した.