Tôi có thể khai báo một async funciton nhưng không sử dụng await được không?

Nội dung bài viết

Video học lập trình mỗi ngày

Tiếp theo trong javascript hầu hết những tính năng đều không thông báo cho chúng ta biết đâu là synchronous và asynchronous. Chính vì vậy việc sử dụng async() hay không tuỳ thuộc vào điều kiện và luồng đi của mỗi dự án hay mỗi code của bạn. 

Tips: Tổng hợp bài viết "async await trong javascript".

Nhưng nếu bạn chưa có kinh nhiệm nhiều thì làm sao đây. Có một cách, đó chính là những feature của javascript mà có callback thì lúc đó bạn có thể sử dụng như một function async. Ví dụ: Array.prototype.sort() chấp nhận callback nhưng hoàn toàn synchronous.


Async without await


Và bây giờ đi vào câu hỏi "Tôi có thể khai báo một async funciton nhưng không sử dụng await được không?". Tất nhiên là được rồi, nhưng có một số ý kiến ở đây nên tôi nghĩ cũng nên trình bày quan điểm cho các bạn cùng nghe. Đầu tiên là xem ví dụ sau:


# with async function

const a = async () => {
	
	return {foo: 'bar'}

}

# without async function


const a = () => {
	
	return {foo: 'bar'}

}

Chức năng đều giống nhau, làm nhiệm vụ cũng giống nhau nhưng chỉ khác ở đây đó chính là cách return về của hai cách trên là khác nhau. Xem tiếp theo


# return with async function

console.log( a().then(el => console.log(el)) );// { foo:"bar"}


#return without async function

console.log( a() );// { foo:"bar"}

Bởi vì khi bạn sử dụng async function thì điều đó sẽ luôn return về một Promise(). Chình vì vậy bạn phải sử dụng .then() để nhận kết quả trả về. Ngươc lại với cú pháp thứ hai việc return về rất đơn giản. 


Chính vì vậy điều tôi muốn nói là Sử dụng async không dùng await cũng không sao, nhưng nó làm code của bạn rườm rà và phải sử dụng những cú pháp không cần thiết. Cho nên bạn phải hiểu khi nào dùng async function. Nhân tiện đây tôi nói thêm về một khía cạnh nữa đó là asynchronous function với async function giống và khác nhau như thế nào?


Asynchronous function và async function


Có một sự khác viết giữa asynchronous function và async function chỉ có những developers tinh tế mới nhận ra được. Đó là

  • asynchronous function đó chính là một function luôn cung cấp một kết quả asynchronous, nghĩa là luôn nhận một kết quả không đồng bộ . Ví dụ: một function có sử dụng callback, sử dụng promise()...
  • async function được xác định thông qua một cú pháp đó là async(), liên quan đến await(). Đó chính là async/await mà ta đang nói đến.
  • Đến đây, tôi và bạn cũng đã hiểu hơn về async await trong javascript rồi. Mong rằng qua những câu hỏi thực tế này, bạn sẽ dùng async đúng cách hơn. Mang lại những điều mới mẻ cho bản thân cũng như code của các bạn. Để hiểu nhiều hơn các bạn có thể search thêm về "async await trong javascript".

Có thể bạn đã bị missing