JavaScript-ში ასინქრონული კოდი კოლბექებით

დავუშვათ, გვაქვს რაღაც ასინქრონული ფუნქცია:

javascriptfunction make() {
  setTimeout(function() {
    console.log('1');
  }, 3000);
}

დავუშვათ, ჩვენ ვიყენებთ ამ ფუნქციას შემდეგნაირად:

javascriptmake();
console.log('2'); // შესრულდება პირველი

დავუშვათ, გვსურს, რომ მეორე კონსოლში დაბეჭდვა შესრულდეს მას შემდეგ, რაც შესრულდება ასინქრონული ოპერაცია ფუნქციის შიგნით. ამისთვის გამოყენებული ერთ-ერთი მიდგომა არის კოლბექების გამოყენება: მოვათავსოთ მოსალოდნელი კოდი ანონიმურ ფუნქციაში და პარამეტრად გადავცეთ ფუნქციას make:

javascriptmake(function() {
  console.log('2');
});

რა თქმა უნდა, ეს თავისთავად არ მოგვარს ჩვენს ამოცანას. ჩვენ უბრალოდ დავადეთ შემდეგი შეთანხმება: თუ გსურთ კოდის შესრულება make-ის გამოძახების შემდეგ, გადაეცით ეს კოდი კოლბექის სახით make-ის გამოძახებას.

გამოვასწოროთ ფუნქციის make კოდი ისე, რომ იგი დაიწყოს მუშაობა ჩვენი შეთანხმების შესაბამისად:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // რაღაც ასინქრონული ოპერაცია, შეიძლება არა ერთი
    callback();       // შემდეგ კი ჩვენი კოლბექი
  }, 3000);
}
Задание 1

მოგვიყევით, რა თანმიმდევრობით დაიბეჭდება რიცხვები კონსოლში:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1');
    callback();
  }, 3000);
}

make(function() {
  console.log('2');
  console.log('3');
});