🌹Bạn nào muốn mua cho mình cốc cà phê, cái pizza hay chỉ là gói mì tôm hảo hảo, hãy dùng MoMo quét mã QR tại link này nhé: nhantien.momo.vn/hoidanit (lưu ý: tên người nhận là PHAM VAN TUAN) Đây là video #4 trong series học và thực hành để nắm vững Javascript NÂNG CAO. 👉Xem Full Playlist này tại đây:th-cam.com/video/IkKDSS_6qy4/w-d-xo.html 👉 Cần giải đáp thắc mắc, cũng như hỗ trợ, tham gia group Facebook : facebook.com/groups/hoidanit 👉Các bạn đăng ký kênh, Like cũng như comment để mình có thêm động lực làm video nha. Cảm ơn mọi người ❤ 👉Chanel khác của mình (Tiếng anh): th-cam.com/channels/HqJxLo7mKam9GKqqwr2wfA.html
Nhận xét: Giảng nhiều nói nhiều code chạy nhiều nhưng cuối cùng bải giảng được lại gì? Một bài giản chất lượng tốt cần ít nhất những thứ như sau: 1. Tại sao họ lại dùng? 2. Ví dụ càng dễ càng tốt? 3. Sau cùng bạn học được gì nhớ được những gì? ==> Sau khi xem video này có thể chúng ta chỉ nhớ mấy từ callback, callback, ..., callback. Cảm ơn bài giảng.
với thị trường youtube thì: 1. nó là free 2. việc học hay không, thấy phù hợp hay ko thì nó phụ thuộc vào bản thân mỗi người 3. phong cách của mình nó khác với người khác. bạn nào xem video đủ lâu, đủ nhiều sẽ thấy là mình ko thích code 4. mình phá vỡ mọi quy tắc. code chỉ là đống shit. ko biết thì google. mình chẳng là thầy của ai cả. mình chỉ là chia sẻ những cái mình biết. 5. bạn muốn có giáo án, muốn ví dụ cụ thể., muốn ABCXYZ... thì trả tiền cho dịch vụ. dịch vụ ở đây là trường học, trung tâm, khóa học online...
@@hoidanit *_em thấy anh dạy như vậy là quá hay rồi anh ạ ^^ người ta ko thấy hay vì họ không hợp thôi, đầy cái mất đống tiền còn không được bằng video anh dạy_*
2 ปีที่แล้ว
Uhm, mình thì hiểu nhưng nhiều người sẽ thấy rối. Chia sẻ đã rất là tuyệt vời rồi 👏
12:43 dòng cuối cùng là getTodos(callback), đã truyền vào callback rồi, vậy phía trên chỗ function getTodos(callback) truyền thêm callback nữa thì ko cần thiết phải ko mọi ng
callback ở getTodo(callback) là alias của parameter thôi, bạn có thể đặt nó là gì cũng đc. Function trong JS nó là object, và parameter của function cũng accept object. Nên ta mới truyền 1 function làm parameter đc
anh ơi dùng hàm gì để tự động cho hàm setInterval dừng trong một khoảng thời gian nhất định và thực hiện function khác ( e dùng hàm clearInterval thì nó dừng luôn ngay khi gọi, e chả biết dùng hàm gì để thiết lập thời gian cho hàm Setinterval dùng trong một khoảng thời gian nào đó rồi dừng lại và chuyển sang hàm khác )
@@hoidanit setTimeout là thực thi 1 callback trong khoảng thời gian delay, mà callback của em là cái setInterval. em muốn cho cái setInterval chạy khoảng một thời gian rồi tự dộng dừng
@@phatle4912 trong cái setinterval , bạn tạo một biến = 0 sau đó mỗi lần setinterval thì tăng biến đó lên 1 Nếu biến đó = số lần bạn muốn thì cho chạy hàm clear interval. Theo mình hiểu là vậy
cái này e hiểu mà anh dung http request e thì học bên fetch nên cũng có chút chưa hiểu về http luồng chạy e thây cả 2 thắng đều giống nhau. theo a nên dùng thằng nào chạy ngon hơn
Em hiểu trình tự chạy code khi dùng call back nhưng em vẫn chưa hiểu là: rõ ràng em có thể định nghĩa 1 hàm ở ngoài, rồi trong 1 hàm khác, sau cuối cùng muốn dùng thì gọi hàm này ban đầu em nói vào - làm như vậy ý nghĩa cũng tương tự như call back function mà? Mong anh giúp em ạ
1. Cách viết không dùng callback: gọi hàm B bên trong thân hàm A, vẫn đạt được kết quả mong muốn function B(err, data){ //code logic } function A(x, y){ //code logic B(err, data); } //thực thi: A(1,2); 2. Cách viết dùng callback: truyền hàm B vào trong parameter của hàm A function B(err, data){ } function A(x, y, callback){ //code logic callback(err, data); } //thực thi: A(1, 2, B); => rõ ràng cách viết thứ 2 (dùng callback) sẽ tiện lợi hơn, vì sau này ta có thể truyền bất cứ hàm C, D, E ... nào đó vào hàm A miễn là nó có format đầu vào (cùng có 2 parameter error và data) tương tự hàm B mà không cần sửa code trong thân của hàm A. Thậm chí ta không cần khai báo trước hàm B, C, D, E... để truyền vào hàm A mà có thể tạo một function không tên và truyền ngay vào hàm A như sau function A(x, y, callback){ //code logic callback(err, data); } //thực thi: A(1, 2, function(err, data)=>{ // code logic xử lý trong function callback không tên }); 3. Bản chất của callback chỉ là gọi một function trong 1 function khác, để giải quyết vấn đề bất đồng bộ trong js, đôi khi ta phải cần đến một chuỗi các callback lồng nhau: function B(err, data){ } function A(x, y, callback){ // code logic: nếu đoạn code logic này mà nặng và tốn time, thì chương trình sẽ thực thi ngay lệnh callback phía sau mà không chờ data trả về // để giải quyết vấn đề chỉ gọi callback phía sau khi đã có data trả về thì ngay trong đoạn code logic này cũng lại cần phải viết theo kiểu callback // mọi thứ cứ lặp lại như thế cho đến khi dòng code xử lý logic còn lại là đơn giản và không tốn nhiều time nữa // khi đó ta gặp hiện tưởng callback hell, có quá nhiều callback lồng nhau callback(err, data); } //thực thi: A(1, 2, B);
callback là truyền 1 hàm làm đối số của 1 hàm khác sao cho code có thể chạy lần lượt . Cho e hỏi kiểu viết này function doHomework(subject, callback) { alert(`Starting my ${subject} homework.`); callback(); } function alertFinished() { alert('Finished my homework'); } doHomework('math', alertFinished); với kiểu viết này function doHomework(subject) { alert(`Starting my ${subject} homework.`); alertFinished(); } function alertFinished() { alert('Finished my homework'); } doHomework('math'); đều ra 1 kết quả . Thế kiểu viết sau có phải là 1 callback ko a
callback là gọi lại sau. ở đây, là truyền function là input đầu vào. kiểu đầu tiên là callback e nhé. còn kiểu sau chỉ đơn thuần là em gọi hàm bên trong hàm mà thôi. nó đâu dẫn tới callback hell :v
@@hoidanit sao e thử gọi callback ntn : getToDos = (myCallback) => { console.log(1); myCallback(); console.log(3); } test = () => { setTimeout(() => { console.log(2); }, 2000); } getToDos(test); sao nó không theo thứ tự 1->2->3 nhỉ . E tưởng callback để đảm bảo code sẽ chạy đúng theo thứ tự
@@hoidanit e tưởng là js là chạy không đồng bộ ,các hàm chạy song song nhau , dùng callback thì sẽ trở thành đồng bộ tức là chạy theo thứ tự .Em có hiểu sai ý của callback ko nhỉ
@@phongtran7113thứ 1: js chỉ có 1 thread nên nó chỉ có 1 con stack và head vì thế nó chỉ thực thi được 1 task tại 1 thời điểm mà thôi! chư không có các hàm chạy song song trừ khi ứng dụng vào các promise... hay bất đồng bộ! thú2: callback nó chỉ là một function được truyền vào một function khác dạng tham số và được gọi như một đối số vì bản chất trong js hầu hết các kiểu dũ liệu đều là object nên đó là lý do vì sao function có thể nhận tham số là một function vì function trong js bản chất cũng là một object thứ3: callback nó tuỳ vào mục đích bạn sử dụng là gì? giống như js, nếu bạn xử lý logic liên quan đến bất đồng bộ thì bạn có thể thấy js xử lý được bất đồng bộ vì nhờ vào môi trường nó chạy là browser và được support với apis của browser nên nó có thể chạy bất đồng bộ, còn về bản chất như bạn hiểu js luôn chạy một cách tuần tự và callback cũng vậy nếu bạn sử lý logic tuần tự thì nó cũng chỉ chạy tuần tự còn bạn sử lý trong logic asyn thì nó sẽ xử lý theo kiểu asyn
callback lý thuyết thì dễ hiểu đến lúc làm việc với fetch thì việc xử lý function mới khó hiểu :))) với những người như mình đã hiểu về callback r thì thấy hiểu những với ai mới tìm hiểu thì điều đongj lại cuối video này sẽ là callback :))
Hình như mình đang hiểu sai về callback phải không ta. Có phải nếu như dùng như trong video thì nó cũng không khác gì việc gọi function trong function, còn khi dùng với promise thì nó mới thực sự giải quyết được vấn đề bất đồng bộ phải không nhỉ?
callback là vậy mà bạn. functions lồng với functions (nên mới có cái gọi là callback hell). promise nó giúp code của bạn từng mình hơn 1 xíu (khi cung cấp 2 biến resolve và reject). còn về sau này dùng async await nó tiện lợi hơn nhiều bạn nhé
11:21 Sao cái đoạn con sư tử em cũng định nghĩa 1 cái callback giống anh, mà VScode của em nó hiển thị cái callback đó màu vàng. Và khi gọi callback thì nó không ra gì cả
🌹Bạn nào muốn mua cho mình cốc cà phê, cái pizza hay chỉ là gói mì tôm hảo hảo, hãy dùng MoMo quét mã QR tại link này nhé: nhantien.momo.vn/hoidanit (lưu ý: tên người nhận là PHAM VAN TUAN)
Đây là video #4 trong series học và thực hành để nắm vững Javascript NÂNG CAO.
👉Xem Full Playlist này tại đây:th-cam.com/video/IkKDSS_6qy4/w-d-xo.html
👉 Cần giải đáp thắc mắc, cũng như hỗ trợ, tham gia group Facebook : facebook.com/groups/hoidanit
👉Các bạn đăng ký kênh, Like cũng như comment để mình có thêm động lực làm video nha. Cảm ơn mọi người ❤
👉Chanel khác của mình (Tiếng anh): th-cam.com/channels/HqJxLo7mKam9GKqqwr2wfA.html
*_Anh dạy hay quá anh ạ ^^ cảm ơn anh nhiều ạ_*
chưa biết làm thực tế ntn nhưng nghe giảng rất dễ hiểu, thanks Erik
cảm ơn bạn đã ủng hộ
Nhận xét:
Giảng nhiều nói nhiều code chạy nhiều nhưng cuối cùng bải giảng được lại gì?
Một bài giản chất lượng tốt cần ít nhất những thứ như sau:
1. Tại sao họ lại dùng?
2. Ví dụ càng dễ càng tốt?
3. Sau cùng bạn học được gì nhớ được những gì?
==> Sau khi xem video này có thể chúng ta chỉ nhớ mấy từ callback, callback, ..., callback.
Cảm ơn bài giảng.
với thị trường youtube thì:
1. nó là free
2. việc học hay không, thấy phù hợp hay ko thì nó phụ thuộc vào bản thân mỗi người
3. phong cách của mình nó khác với người khác. bạn nào xem video đủ lâu, đủ nhiều sẽ thấy là mình ko thích code
4. mình phá vỡ mọi quy tắc. code chỉ là đống shit. ko biết thì google. mình chẳng là thầy của ai cả. mình chỉ là chia sẻ những cái mình biết.
5. bạn muốn có giáo án, muốn ví dụ cụ thể., muốn ABCXYZ... thì trả tiền cho dịch vụ. dịch vụ ở đây là trường học, trung tâm, khóa học online...
@@hoidanit *_em thấy anh dạy như vậy là quá hay rồi anh ạ ^^ người ta ko thấy hay vì họ không hợp thôi, đầy cái mất đống tiền còn không được bằng video anh dạy_*
Uhm, mình thì hiểu nhưng nhiều người sẽ thấy rối. Chia sẻ đã rất là tuyệt vời rồi 👏
Cảm ơn anh siêu hay luôn
cảm ơn e.hehe
a minh họa dễ hiểu lắm, cảm ơn a
cảm ơn em.hehe
12:43 dòng cuối cùng là getTodos(callback), đã truyền vào callback rồi, vậy phía trên chỗ function getTodos(callback) truyền thêm callback nữa thì ko cần thiết phải ko mọi ng
callback ở getTodo(callback) là alias của parameter thôi, bạn có thể đặt nó là gì cũng đc. Function trong JS nó là object, và parameter của function cũng accept object. Nên ta mới truyền 1 function làm parameter đc
anh ơi dùng hàm gì để tự động cho hàm setInterval dừng trong một khoảng thời gian nhất định và thực hiện function khác ( e dùng hàm clearInterval thì nó dừng luôn ngay khi gọi, e chả biết dùng hàm gì để thiết lập thời gian cho hàm Setinterval dùng trong một khoảng thời gian nào đó rồi dừng lại và chuyển sang hàm khác )
set Time out đấy em. điều quan trọng là e muốn loop bao nhiêu lần. 1 hay n lần hay vô hạn
@@hoidanit setTimeout là thực thi 1 callback trong khoảng thời gian delay, mà callback của em là cái setInterval. em muốn cho cái setInterval chạy khoảng một thời gian rồi tự dộng dừng
@@phatle4912 trong cái setinterval , bạn tạo một biến = 0 sau đó mỗi lần setinterval thì tăng biến đó lên 1
Nếu biến đó = số lần bạn muốn thì cho chạy hàm clear interval. Theo mình hiểu là vậy
cái này e hiểu mà anh dung http request e thì học bên fetch nên cũng có chút chưa hiểu về http luồng chạy e thây cả 2 thắng đều giống nhau. theo a nên dùng thằng nào chạy ngon hơn
Callback là hàm dc làm tham số của hàm khác
Hàm trong hàm
dễ hiểu mà hehe
cảm ơn bạn :v
đệ quy là gọi lại nó trong chính thân nó! đệ quy có liên quan ko anh?
đệ quy là cách em viết function. còn callback hell là cách trình bày code. viết sao cho nó dễ đọc, dễ maitainer đấy em :v
Em hiểu trình tự chạy code khi dùng call back nhưng em vẫn chưa hiểu là: rõ ràng em có thể định nghĩa 1 hàm ở ngoài, rồi trong 1 hàm khác, sau cuối cùng muốn dùng thì gọi hàm này ban đầu em nói vào - làm như vậy ý nghĩa cũng tương tự như call back function mà? Mong anh giúp em ạ
vấn đề là N hàm. chứ ko phải là 1, 2 hàm đâu e
1. Cách viết không dùng callback: gọi hàm B bên trong thân hàm A, vẫn đạt được kết quả mong muốn
function B(err, data){
//code logic
}
function A(x, y){
//code logic
B(err, data);
}
//thực thi:
A(1,2);
2. Cách viết dùng callback: truyền hàm B vào trong parameter của hàm A
function B(err, data){
}
function A(x, y, callback){
//code logic
callback(err, data);
}
//thực thi:
A(1, 2, B);
=> rõ ràng cách viết thứ 2 (dùng callback) sẽ tiện lợi hơn, vì sau này ta có thể truyền bất cứ hàm C, D, E ... nào đó vào hàm A miễn là nó có format đầu vào (cùng có 2 parameter error và data) tương tự hàm B mà không cần sửa code trong thân của hàm A.
Thậm chí ta không cần khai báo trước hàm B, C, D, E... để truyền vào hàm A mà có thể tạo một function không tên và truyền ngay vào hàm A như sau
function A(x, y, callback){
//code logic
callback(err, data);
}
//thực thi:
A(1, 2, function(err, data)=>{
// code logic xử lý trong function callback không tên
});
3. Bản chất của callback chỉ là gọi một function trong 1 function khác, để giải quyết vấn đề bất đồng bộ trong js, đôi khi ta phải cần đến một chuỗi các callback lồng nhau:
function B(err, data){
}
function A(x, y, callback){
// code logic: nếu đoạn code logic này mà nặng và tốn time, thì chương trình sẽ thực thi ngay lệnh callback phía sau mà không chờ data trả về
// để giải quyết vấn đề chỉ gọi callback phía sau khi đã có data trả về thì ngay trong đoạn code logic này cũng lại cần phải viết theo kiểu callback
// mọi thứ cứ lặp lại như thế cho đến khi dòng code xử lý logic còn lại là đơn giản và không tốn nhiều time nữa
// khi đó ta gặp hiện tưởng callback hell, có quá nhiều callback lồng nhau
callback(err, data);
}
//thực thi:
A(1, 2, B);
hay ạ@@MrVipthao
em thấy Anh giảng rất chi tiết về Callback, có demo minh họa đầy đủ, nhưng em vẫn ko hiểu :))
chẳng sao cả. cứ học tiếp thôi em. sau này gặp ắt biết
callback là truyền 1 hàm làm đối số của 1 hàm khác sao cho code có thể chạy lần lượt . Cho e hỏi kiểu viết này
function doHomework(subject, callback) {
alert(`Starting my ${subject} homework.`);
callback();
}
function alertFinished() {
alert('Finished my homework');
}
doHomework('math', alertFinished);
với kiểu viết này
function doHomework(subject) {
alert(`Starting my ${subject} homework.`);
alertFinished();
}
function alertFinished() {
alert('Finished my homework');
}
doHomework('math');
đều ra 1 kết quả . Thế kiểu viết sau có phải là 1 callback ko a
callback là gọi lại sau. ở đây, là truyền function là input đầu vào. kiểu đầu tiên là callback e nhé. còn kiểu sau chỉ đơn thuần là em gọi hàm bên trong hàm mà thôi. nó đâu dẫn tới callback hell :v
@@hoidanit
sao e thử gọi callback ntn :
getToDos = (myCallback) => {
console.log(1);
myCallback();
console.log(3);
}
test = () => {
setTimeout(() => {
console.log(2);
}, 2000);
}
getToDos(test);
sao nó không theo thứ tự 1->2->3 nhỉ . E tưởng callback để đảm bảo code sẽ chạy đúng theo thứ tự
@@phongtran7113 e bỏ hàm settimeout đi nhé =))
@@hoidanit e tưởng là js là chạy không đồng bộ ,các hàm chạy song song nhau , dùng callback thì sẽ trở thành đồng bộ tức là chạy theo thứ tự .Em có hiểu sai ý của callback ko nhỉ
@@phongtran7113thứ 1: js chỉ có 1 thread nên nó chỉ có 1 con stack và head vì thế nó chỉ thực thi được 1 task tại 1 thời điểm mà thôi! chư không có các hàm chạy song song trừ khi ứng dụng vào các promise... hay bất đồng bộ!
thú2: callback nó chỉ là một function được truyền vào một function khác dạng tham số và được gọi như một đối số vì bản chất trong js hầu hết các kiểu dũ liệu đều là object nên đó là lý do vì sao function có thể nhận tham số là một function vì function trong js bản chất cũng là một object
thứ3: callback nó tuỳ vào mục đích bạn sử dụng là gì? giống như js, nếu bạn xử lý logic liên quan đến bất đồng bộ thì bạn có thể thấy js xử lý được bất đồng bộ vì nhờ vào môi trường nó chạy là browser và được support với apis của browser nên nó có thể chạy bất đồng bộ, còn về bản chất như bạn hiểu js luôn chạy một cách tuần tự và callback cũng vậy nếu bạn sử lý logic tuần tự thì nó cũng chỉ chạy tuần tự còn bạn sử lý trong logic asyn thì nó sẽ xử lý theo kiểu asyn
callback lý thuyết thì dễ hiểu đến lúc làm việc với fetch thì việc xử lý function mới khó hiểu :))) với những người như mình đã hiểu về callback r thì thấy hiểu những với ai mới tìm hiểu thì điều đongj lại cuối video này sẽ là callback :))
haha :v
Hình như mình đang hiểu sai về callback phải không ta. Có phải nếu như dùng như trong video thì nó cũng không khác gì việc gọi function trong function, còn khi dùng với promise thì nó mới thực sự giải quyết được vấn đề bất đồng bộ phải không nhỉ?
callback là vậy mà bạn. functions lồng với functions (nên mới có cái gọi là callback hell). promise nó giúp code của bạn từng mình hơn 1 xíu (khi cung cấp 2 biến resolve và reject). còn về sau này dùng async await nó tiện lợi hơn nhiều bạn nhé
11:21
Sao cái đoạn con sư tử em cũng định nghĩa 1 cái callback giống anh, mà VScode của em nó hiển thị cái callback đó màu vàng. Và khi gọi callback thì nó không ra gì cả
kệ visual code đi e. check sao code chạy đc thôi :v
@@hoidanit Sao em viết ở trong file .js thì nó như vậy ? Còn em viết ở ngoài file html thì ko bị