JavaScript-ში ასინქრონული კოდი კოლბექებით
დავუშვათ, გვაქვს რაღაც ასინქრონული ფუნქცია:
function make() {
setTimeout(function() {
console.log('1');
}, 3000);
}
დავუშვათ, ჩვენ ვიყენებთ ამ ფუნქციას შემდეგნაირად:
make();
console.log('2'); // შესრულდება პირველი
დავუშვათ, გვსურს, რომ მეორე
კონსოლში დაბეჭდვა შესრულდეს მას შემდეგ,
რაც შესრულდება ასინქრონული ოპერაცია
ფუნქციის შიგნით.
ამისთვის გამოყენებული ერთ-ერთი მიდგომა
არის კოლბექების გამოყენება:
მოვათავსოთ მოსალოდნელი კოდი ანონიმურ ფუნქციაში
და პარამეტრად გადავცეთ ფუნქციას make:
make(function() {
console.log('2');
});
რა თქმა უნდა, ეს თავისთავად არ მოგვარს
ჩვენს ამოცანას. ჩვენ უბრალოდ დავადეთ
შემდეგი შეთანხმება: თუ გსურთ კოდის შესრულება
make-ის გამოძახების შემდეგ, გადაეცით ეს კოდი
კოლბექის სახით make-ის გამოძახებას.
გამოვასწოროთ ფუნქციის make კოდი ისე, რომ
იგი დაიწყოს მუშაობა ჩვენი შეთანხმების
შესაბამისად:
function make(callback) {
setTimeout(function() {
console.log('1'); // რაღაც ასინქრონული ოპერაცია, შეიძლება არა ერთი
callback(); // შემდეგ კი ჩვენი კოლბექი
}, 3000);
}
მოგვიყევით, რა თანმიმდევრობით დაიბეჭდება რიცხვები კონსოლში:
function make(callback) {
setTimeout(function() {
console.log('1');
callback();
}, 3000);
}
make(function() {
console.log('2');
console.log('3');
});