سوال درباره callback ها

پرسیده شده
فعالیت 1155 روز پیش
دیده شده 429 بار
0

سلام

راجب کال بک ها که داشتم مطالعه میکردم؛ از کال بک ها به عنوان آپشنی برای  اسینک کردن کدها  استفاده شده بود

پس چرا تو کد زیر که از کال بک استفاده شده؛ بصورت سینک کدها اجرا میشه ؟

کد زیر رو که اجرا میکنم ؛ اول 3 ثانیه طول میکشه و بعد عدد 3 نمایش داده میشه و بعد 5 ثانیه طول میکشه و عدد 2 نشون میده در صورتی که اگه اسینک اجرا میشد؛ نباید 5 ثانیه طول میکشید و فقط باید 2 ثانیه طول بکشه 
 


function one() {
    console.log(1);
}

function two(cb) {
    setTimeout(function() {
        console.log(2);
        cb();
    }, 5000);
}

function three() {
    setTimeout(function() {
        console.log(3);
    }, 3000);
}

one();
two(three);

 

در صورتی که در کد زیر؛ که از کال بک استفاده نمیشه؛ بصورت اسینک کدها اجرا میشه

(البته این موضوع که محیط کروم بصورت اسینک هستش رو اطلاع دارم فقط سوال بخاطر کال بک ها هستش که برای اسینک قراره استفاده بشن ولی کار ها رو بصورت سینک انجام میده)

 

function one() {
    console.log(1);
}

function two() {
    setTimeout(function() {
        console.log(2);

    }, 5000);
}

function three() {
    setTimeout(function() {
        console.log(3);
    }, 3000);
}

one();
two();
three();

 

 

 

 

 

 

فایل پیوست

amir tavakolian
amir tavakolian

5 بهمن 99

0
حذف شده

کد مشکلی نداره و به صورت آسینک داره اجرا میشه، نفهمیدم دقیق مشکلت کجاست ولی میتونی با این تغییر توی کد متوجه بشی که داره به صورت آسینک اجرا میشه یا نه

function one() {
    console.log(1);
}

function two(cb) {
    let i = 1;
    setInterval(() => {
        console.log(i + "second");
        i++;
    }, 1000);
    setTimeout(function() {
        console.log(2);
        cb();
    }, 5000);
}

function three() {
    setTimeout(function() {
        console.log(3);
    }, 3000);
}

one();
two(three);
فایل پیوست

سعید ریحانی

توسط

سعید ریحانی

7 اسفند 99