JavaScript'i anlamada sorun yaşıyorum promises
. Aşağıdaki kodu yazdım:
var p = new Promise(function(resolve,reject){
reject(Error("hello world"));
});
setTimeout(()=>p.catch(e=>console.log(e)),5000);
Bunu Chrome geliştirici konsolumda hemen görüyorum:
Ama 5 saniye bekledikten sonra, mesaj bu görüntü gibi otomatik olarak siyaha döner:
JavaScript kodum ile javaScript kodumun geliştirici konsolunda "mevcut içeriği değiştirebileceği" geliştirici konsolu arasında daha önce hiç bu davranışı görmedim.
Bu nedenle, resolve
bu kodu yazarak aynı durumun meydana gelip gelmediğini görmeye karar verdim :
var p = new Promise(function(resolve,reject){
resolve("hello world");
});
setTimeout(()=>p.then(e=>console.log(e)),5000);
Ancak bu durumda, geliştirici konsolum 5 saniye sonrasına kadar hiçbir şey göstermiyor ve daha sonra yazdırılıyor hello world
.
Neden çağrıldıkları zaman resolve
ve neden reject
bu kadar farklı davranılıyor?
EKSTRA
Ayrıca bu kodu yazdım:
var p = new Promise(function(resolve,reject){
reject(Error("hello world"));
});
setTimeout(()=>p.catch(e=>console.log("errors",e)),5000);
setTimeout(()=>p.catch(e=>console.log("errors 2",e)),6000);
setTimeout(()=>p.catch(null),7000);
Bu, geliştirici konsolunda birkaç çıkışa neden olur. 0 zamanında kırmızı hata, kırmızı metin 5 saniyede siyah errors hello world
, sonra 6 saniyede yeni bir hata mesajı, 7 saniyede errors 2 hello world
kırmızı bir hata mesajı. Şimdi reject
gerçekten kaç kez çağrıldığına çok şaşkınım .... Kayboldum ...
var p = new Promise(function(resolve,reject){ reject(Error("hello world")); });
daha deyimsel ve kısacavar p = Promise.reject(Error("hello world"));
:-) olarak yazılabilir