Skip to content

Instantly share code, notes, and snippets.

@k-gun

k-gun/promises.js

Last active May 30, 2020
Embed
What would you like to do?
<script>
// Bu kodları bit html dosyası içine kaydedip aşağıda çalıştırmak
// istediğin /* ... */ alanları açabilirsin.
// Her "async function" bir "Promise" döndürür.
async function foo() {}
/* console.log(foo()) */
/* console.log(foo().then(x => console.log(x))) */
// Promise ile yapalım:
async function test_1() {
let res = await fetch('https://httpbin.org/json')
let ret = await res.json()
console.log("Response:", res)
console.log("Returned JSON:", ret)
// Bunları doğrudan kullanabiliriz içeride (res & ret).
console.log(res.status)
if (res.status == 200) {
console.log(ret.slideshow.title)
}
// Ancak yine Promise döner, "ret" anlamsız yani.
return ret
}
// Promise döner, then() kullanıcaz.
/* test_1().then((json) => {
console.log("Returned JSON:", json)
}) */
// Callback ile yapalım:
async function test_2(callback) {
let res = await fetch('https://httpbin.org/json')
let ret = await res.json()
console.log("Response:", res)
console.log("Returned JSON:", ret)
// Bunları doğrudan kullanabiliriz callback içinde (res & ret).
callback(res, ret)
// Callback kullandığımız için Promise döndürmek gerekmeyebilir (duruma göre tabii).
// return ret
}
// Promise dönmez, callback() kullanıcaz.
/* test_2((res, ret) => {
console.log(res.status)
if (res.status == 200) {
console.log(ret.slideshow.title)
}
let json = ret
console.log("Returned JSON:", json)
}) */
// Hata yönetimi (Promise):
function test_error_1() {
return new Promise((resolve, reject) => { throw 'Error!' })
}
/* test_error_1().catch((e) => {
console.error(e)
}) */
// Hata yönetimi (async / await):
async function test_error_2() {
await fetch('https://httpbin.orggggggg/json')
}
// Bu şekilde yakalanır.
/* test_error_2().catch((e) => {
console.log(e)
}) */
// Ancak try/catch içine alabiliriz, ancak yine hata konsolda gözükür.
/* try {
test_error_2()
} catch {} */
async function test_error_3() {
// Bu try/catch içine sarmalanır, bu konsolda görünmesini engeller.
try {
let res = await fetch('https://httpbin.orggggggg/json')
} catch {
// Hiçbir şey yapma.
}
// Veya (throw aşağıki gibi catch() gerektirir, throw'suz da catch() olmaz).
// } catch (e) {
// throw e
// }
}
/* test_error_3().catch((e) => {
console.log(e)
}) */
console.log("Son!")
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.