⊗jsSpACInr 155 of 294 menu

Kod Asinkron dengan Panggilan Balik dalam JavaScript

Katakan kita mempunyai satu fungsi asinkron:

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

Katakan kita menggunakan fungsi ini dengan cara berikut:

make(); console.log('2'); // akan dilaksanakan dahulu

Katakan kita ingin memastikan output kedua ke konsol dilaksanakan selepas operasi asinkron di dalam fungsi selesai. Salah satu pendekatan yang digunakan untuk ini ialah penggunaan panggilan balik: bungkus kod yang menunggu dalam fungsi tanpa nama dan hantarkannya sebagai parameter kepada fungsi make:

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

Sudah tentu, ini sahaja tidak menyelesaikan masalah kita. Setakat ini kita hanya membuat perjanjian berikut: jika ingin melaksanakan kod selepas make dicetuskan, hantarkan kod tersebut sebagai panggilan balik dalam panggilan make.

Mari betulkan kod fungsi make supaya ia mula berfungsi mengikut perjanjian kami:

function make(callback) { setTimeout(function() { console.log('1'); // beberapa operasi asinkron, mungkin bukan satu callback(); // kemudian panggilan balik kami }, 3000); }

Terangkan, dalam susunan apakah nombor akan dipaparkan dalam konsol:

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