async/await ES7 – Javascript

ES6’da yield’ı asenkron işleri bekletmek için kullanabiliyorduk. ES7’de bu iş için await keywordu bulunmaktadır.
Hemen örneğimize geçelim, console slm yazdırıp daha sonra 3sn bekletip by yazdıran methodlarımızı aşağıdaki gibi yazabiliriz.

Not: ES7 tüm browserlar desteklememektedir özellikle Explorer.

function bekle3sn(){
	return new Promise(function(resolve){
		setTimeout(resolve, 3000);
	})
}

async function SelamveBy(){
	console.log("slm");
	await bekle10sn();
	console.log("by");
}

SelamveBy();

Promiseler basitçe 4 parçadan oluşmaktadır.

  1. Öncelikle bir new Promise diyerek yeni bir promise yaratılır.
  2. Bu Promise ya Resolve edilir ve işlem tamamlanır yada Reject edilir.
  3. Daha sonra bu Promise’i kullanırken .then fonksiyonu içinde Resolve ve Reject durumlarını handle eden 2 fonksiyon verilir.
  4. Eğer herhangi bir exception throw edilirse, .catch fonksiyonu ile yakalanıp handle edilebilir.
  5. En önemlisi bir Promise geriye bir Promise return edebilir, buna Promise Chaining denir.
//Genel Kullanım
var p1 = new Promise( (resolve, reject) => {  
  resolve('Success!');
  // or
  // reject ("Error!");
} );

p1.then( value => {  
  console.log(value); // Success!
}, reason => {
  console.log(reason); // Error!
} );