Bài viết này sẽ giới thiệu về khái niệm promise và các ứng dụng của nó trong javascript. Promise được sử dụng khá nhiều ở cả front-end (AngularJS) và back-end(NodeJS), do đó nắm vững khái niệm này sẽ giúp bạn rất nhiều trong việc code và … trả lời phỏng vấn.
Lưu ý: Bài viết sử dụng nhiều ngôn ngữ 16+, khuyến phụ nữ dưới 18 tuổi và trẻ em có thai không nên đọc.
Dạo gần đây mình đi làm thêm, project hiện tại có sử dụng React với cả ES6 – chuẩn Javascript mới. Do mấy bài viết trước mình chê JavaScript sida nhiều thấy cũng tội, hôm nay viết một bài nói tốt cho nó một tí để đổi gió nhé.
Phiên bản JavaScript hiện tại chúng ta đang sử dụng dựa trên chuẩn ECMAScript 5 (ES5). Hiện tại, JavaScript được sử dụng ngày càng nhiều, từ front-end cho đến back-end, điều này đòi hỏi sự cải tiến trong JavaScript (Nghĩ cũng đúng, cái ngôn ngữ sida thế mà code mấy hệ thống to to, code phức tạp thì để lâu chả banh chành ra à !!). Đó là lý do chuẩn ECMAScript 6 (ES6) ra đời, cung cấp 1 số tính năng mới cho JavaScript, đồng thời giúp code trở nên tường minh và dễ viết hơn.
Định viết một bài thôi mà không ngờ dài quá nên phải chia làm 2 phần luôn. Nội dung phần 2 này sẽ chia sẽ một chút về technical, trải nghiệm khi pair-programming và ăn nhậu với team ;).
Đống code như đống *beep*
Nói chuyện con người đủ rồi, giờ nói chuyện technical một chút nào. Ứng dụng của team được xây dựng trên framework CampusM. Framework này là cũng tương tự Ionic Framework, hỗ trợ viết app di động kiểu hybrid-app bằng HTML, CSS, JavaScript. Vì nó khá mạnh, tích hợp được nhiều thứ nên được một số trường Đại học ở UK sử dụng, trong đó có trường mình. Ngày xưa, team sử dụng phiên bản 1 của framework (AEK 1) để viết các chức năng. Gần đây, framework ra phiên bản AEK 2 (Tích hợp React, Redux và ES6 khá hầm hố), một số chức năng mới lại viết bằng AEK 2. Thế là code chia ra làm “code cũ” và “code mới”, cái nào cũng đủ chuyện nhức đầu.
Hôm trước, mình đã kể chuyện đi phỏng vấnxin… code dạo ở nước ngoài được khá nhiều bạn ủng hộ. Kì này mình sẽ kể về ngày đầu tiên đi code dạo và những đồng nghiệp trong dự án nhé.
Hôm đầu ngơ ngác
Như mình đã kể, chắc do thiếu người hay dự án đang cần gấp nên quy trình phỏng vấn và tuyển dụng diễn ra rẹt rẹt, mình vừa phỏng vấn sáng thứ 4 hôm 10/2 thì có offer ngay chiều hôm đó, và sáng thứ 5 hôm sau phải xách đít đi làm. Bọn bên này làm ăn cũng đàng hoàng, send sẵn một cái file PDF hướng dẫn cách liên hệ với admin request account, set vào các group. Do team cũng nhỏ nên trong file có ghi đầy đủ tên thành viên, chức vụ, sở thích (chắc để mọi người gần gũi với nhau hơn), đọc cũng khá là vui.
Để hiểu rõ về các hàm được đề cập trong bài viết này, các bạn nên ôn lại chút kiến thức về object trong javascript và đít (this) trong javascript nhé. Như đã hứa, trong bài này mình sẽ giới thiệu bộ 3 function bind, call ,apply. Đây là 3 hàm tạo nên sự mạnh mẽ và bá đạo của JavaScript.
Trói đít (this) lại bằng bind
Bind là một hàm nằm trong Function.prototype, do đó chỉ có function mới có khả năng gọi nó. Như đã nhắc tới trong bài viết về this, bind được dùng để xác định tham số this cho một function.
Trong phạm vi bài viết, ta sẽ bàn về 3 đặc tính của OOP, so sánh cách hiện thực chúng trong Java và JavaScript. Vì Wiki có sẵn rồi nên mình chỉ copy vào thôi, không giải thích lại lòng vòng nhé:
Mồng 3 Tết, ngày 10/2/2015, trong khi bạn bè ở Việt Nam đang vui vẻ ăn Tết, thoải mái vui chơi đập phá ăn nhậu thì mình phải đi phỏng vấn. Do tối hôm trước ôn kiến thức tới khuya, lại lo lắng hồi hộp nên đến tận 2h mình mới ngủ được. Cũng may buổi sáng mình dậy sớm nổi, chẳng muốn ăn nhưng cũng ráng nuốt để buổi trưa khỏi đói.
Nghe nói bọn bên này formal lắm nên mình cũng không dám mặc style Steve Job áo thun quần jean như thường lệ để đi phỏng vấn. May mà có mang theo 1 bộ vest với đôi giày Tây nên mình cũng có mặc được bộ đồ khá tươm tất. Lịch hẹn là 10h30, mình ra đến tòa nhà ISS lúc 10h25 rồi báo với lễ tân. Chả hiểu các bạn ấy bận hay sao mà tới 10h35 hơn mới có 1 thằng ku xuống dắt mình lên làm test.
Tòa nhà ISS chỗ mình phỏng vấn, trường màu đỏ mà chơi cái tòa nhà đen thui
Ku này cũng khá trẻ nhưng trộng hơi dị. Dáng cao, người thon gầy, đeo kính, mặt ngô ngố, đúng kiểu nerd/otaku thường gặp (Lớp mình cũng có một thằng tương tự). Thằng ku dắt mình lên tầng 3, vào 1 căn phòng nhỏ cũng khá xinh, có 2 cái laptop đặt đối diện nhau. Chẳng lẽ đề test là solo mid Dota hay Lol với nó, có 20 phút làm sao đủ?
Năm nay Tết ta được nghỉ khá nhiều, tận 9 ngày. Do thấy số lượng người xem cũng ít nên blog cũng tạm “nghỉ Tết” cho các bạn đọc có thời gian giải lao, vui chơi quây quần bên người thân và bạn bè. Mình vẫn đang ở nước ngoài nên chả có Tết nhất gì, chỉ có 1 bữa ăn nho nhỏ với các bạn VN, may là gặp được 1 vài bé SV năm nhất khá xinh.
Sau hai tuần nghỉ Tết, chắc sức ỳ sau 10 ngày nghỉ vẫn còn nên bài đầu tiên này mình sẽ không viết về technical nhức đầu mà xin kể một câu chuyện nho nhỏ đầu năm mới. Tựa đề khác của câu chuyện là “Tôi đã đi code dạo ở nước ngoài như thế nào”. Đây là câu chuyện về quá trình xin việc (xin đi code dạo), cũng như lần đầu mình đi phỏng vấn nơi xứ lạ quê người.
Tác giả là thanh niên sơ mi xanh hàng trên cùng thứ tư từ trái vào (ảnh chắc đã qua bàn tay chỉnh sửa nên hơi hư cấu)
Ở bài trước, mình đã nói về khái niệm object và đít– một số khái niệm cơ bản trong JavaScript. Trong bài này, mình sẽ giải thích khái niệm prototype – một khái niệm khá lòng vòng phức tạp, dễ làm điên đầu các front-end developer.
Prototype là cái đếu gì?
Khi một thằng developer khác cứ đi theo và hỏi bạn “Prototype là cái đếu gì?”, hãy trả lời nó: Là cái đầu cha mày, hỏi hỏi suốt. Câu trả lời này có phần hơi bố láo nhưng lại khá là chính xác, có thể hiểu protoype nôm na là khuôn hoặc là cha của một object.
Hẳn là có vài bạn (sinh viên) đang muốn hỏi: Ơ tui là lập trình viên, lo code thôi chứ có phải thiết kế gì đâu mà phải học design? Xin trả lời là: trừ khi bạn đi theo con đường lập trình nhúng, hoặc làm back-end developer 100%, thế nào bạn cũng sẽ phải đụng tới vài việc liên quan tới thiết kế.
Nếu may mắn, những công việc như thiết kế giao diện web, giao diện di động sẽ được thực hiện bởi designer, developer chúng mình chỉ cần file HTML hoặc PSD và code thôi.Tuy nhiên, ở Việt Nam, nhiều khi developer chúng mình cũng phải kiêm luôn nhiệm vụ này.
Thiếu kiến thức về design, đôi khi dev chúng mình cho ra nhiều giao diện khá là khủng khiếp (Thuở xưa ở Đại Học cũng có dạy môn HCI – Tương tác người dùng, nhưng cũng chẳng có tác dụng mấy). Do đó, bạn hãy tự trang bị cho mình những kiến thức design cơ bản, để tạo ra những design coi được. Những kiến thức này sẽ rất hữu dụng khi bạn muốn đi theo con đường front-end developer, hoặc full-stack developer.