12/08/2018, 17:03

Xử lí callback hell trong Javascript

Code kiểu chọc mù mắt như thế này gọi là "callback hell"! function foo(cb) { cb(); } function bar(cb) { cb(); } function olala(cb) { cb(); } function do_it(){ foo(function() { bar(function() { olala(function() { console.log("aizz.... ==!"); ...

Code kiểu chọc mù mắt như thế này gọi là "callback hell"!

function foo(cb) {
    cb();
}
function bar(cb) {
    cb();
}
function olala(cb) {
    cb();
}

function do_it(){
    foo(function() {
        bar(function() {
            olala(function() {
                console.log("aizz.... ==!");
            })
        })
    })
}

"Để tránh callback hell, hãy sử dụng Promise...."

foo()
  .then((something) => {
    return bar(something)
      .then((something) => {
        return olala(something);
      });
  });

Promise được tạo ra không phải chỉ để xử lí callback hell mà là để khắc phục các thiếu sót của callback (còn tiếp). Sử dụng promise để xử lí callback hell mà không hiểu rõ bản chất sẽ mang lại code không kém phần tởm lợm như trên. Vậy thì phải làm sao?

....

function code_sach_dep() {
    foo(thenBar);
}

function thenBar() {
    bar(thenOlala);
}

function thenOlala() {
    olala(function() {
        console.log("done!");
    })
}

Anh em có thể xử lí callback hell bằng cách viết code sạch sẽ tuần tự, thay vì lồng các function nối tiếp nhau.

Thanks for reading!

0