javascript - Apakah perbezaan antara fungsi panggil balik dan fungsi panggilan biasa?
欧阳克
欧阳克 2017-06-26 10:53:07
0
2
1396

Definasi fungsi panggil balik adalah untuk menghantar fungsi b sebagai parameter kepada a untuk pelaksanaan Pada masa ini, b ialah fungsi panggil balik tiba-tiba saya mempunyai soalan, apakah perbezaan antara ia dan memanggil b secara langsung dalam fungsi a.
Saya menulis demo sendiri

function a(){
    b();
    console.log('hello world');
}
function b(){
    var n = 0;
    for(var i = 0;i < 1000000000;i++){
        n++;
    }
    return n;
}
a(); //hello world

Ia akan mengambil masa kira-kira 3 saat untuk melihat hasil output, dan kemudian menulisnya semula dalam bentuk fungsi panggil balik

function a(callback){
    callback.call(this);
    console.log('hello world');
}
function b(){
    var n = 0;
    for(var i = 0;i < 1000000000;i++){
    }
    console.log(1);
}
a(b); //hello world

Hasil keluaran hanya boleh dilihat selepas 3 saat
Saya telah menjumpai banyak artikel, yang semuanya menjelaskan bahawa apabila b dilaksanakan sebagai fungsi panggil balik fungsi a, ia tidak menghalang perlaksanaan biasa fungsi a , kaedah kedua hendaklah serta-merta Apabila ia mengeluarkan hello world, adakah ia kerana saya menggunakan fungsi panggil balik yang salah? Masih mengalami masalah untuk memahami?

欧阳克
欧阳克

温故而知新,可以为师矣。 博客:www.ouyangke.com

membalas semua(2)
淡淡烟草味

1. Tiada perbezaan dalam prestasi
2 Fungsi panggil balik diluluskan sebagai parameter, dan operasi lebih fleksibel Contohnya, anda boleh mentakrifkan fungsi c, yang boleh dijalankan
b(c), apabila anda jalankan fungsi dalam fungsi, Fleksibiliti pembolehubah hilang.

漂亮男人

Nah, anda salah faham, kesan panggilan adalah sama. Dan callback.call(this); 画蛇添足,跟 callback() ini adalah sama.

Kelebihan panggilan balik ialah penyongsangan kebergantungan Anda boleh membiarkan panggilan c, d, e tanpa mengubah suai kod a...

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan