{"id":944,"date":"2017-04-23T22:13:35","date_gmt":"2017-04-23T15:13:35","guid":{"rendered":"http:\/\/blogs.jobsgo.vn\/?p=944"},"modified":"2025-01-14T15:44:53","modified_gmt":"2025-01-14T08:44:53","slug":"6-ly-asyncawait-cua-javascript-danh-bai-promises","status":"publish","type":"post","link":"https:\/\/jobsgo.vn\/blog\/6-ly-asyncawait-cua-javascript-danh-bai-promises\/","title":{"rendered":"6 L\u00fd do Async\/Await c\u1ee7a Javascript \u0111\u00e1nh b\u1ea1i Promises"},"content":{"rendered":"\n
Trong tr\u01b0\u1eddng h\u1ee3p b\u1ea1n \u0111\u00e3 qu\u00ean m\u1ea5t, Node.js \u0111\u00e3 h\u1ed7 tr\u1ee3 async\/await k\u1ec3 t\u1eeb phi\u00ean b\u1ea3n 7.6. N\u1ebfu b\u1ea1n ch\u01b0a th\u1eed qua, b\u00e0i vi\u1ebft n\u00e0y JobsGO s\u1ebd li\u1ec7t k\u00ea c\u00e1c l\u00fd do c\u00f9ng v\u00ed d\u1ee5 \u0111\u1ec3 gi\u1ea3i th\u00edch t\u1ea1i sao b\u1ea1n n\u00ean ch\u1ecdn n\u00f3.<\/p>\n
M\u1ee5c l\u1ee5c<\/p>
V\u1edbi nh\u1eefng ai ch\u01b0a h\u1ec1 nghe qua v\u1ec1 Async\/await th\u00ec \u0111\u00e2y l\u00e0 nh\u1eefng gi\u1edbi thi\u1ec7u ng\u1eafn g\u1ecdn:<\/p>\n
Gi\u1ea3 s\u1eed m\u1ed9t h\u00e0m \u0110o\u1ea1n code sau mi\u00eau t\u1ea3 qu\u00e1 tr\u00ecnh tr\u00ean, s\u1eed d\u1ee5ng promise.<\/p>\n C\u00f2n \u0111\u00e2y l\u00e0 \u0111o\u1ea1n code s\u1eed d\u1ee5ng async\/await:<\/p>\n C\u00f3 1 v\u00e0i \u0111i\u1ec3m kh\u00e1c bi\u1ec7t c\u1ea7n \u0111\u1ec3 \u00fd:<\/p>\n \u0110\u01a1n gi\u1ea3n nh\u1ea5t ch\u00ednh l\u00e0 s\u1ed1 l\u01b0\u1ee3ng code ta c\u1ea7n vi\u1ebft \u0111\u00e3 gi\u1ea3m \u0111i \u0111\u00e1ng k\u1ec3. Trong v\u00ed d\u1ee5 tr\u00ean, r\u00f5 r\u00e0ng r\u1eb1ng ta \u0111\u00e3 ti\u1ebft ki\u1ec7m \u0111\u01b0\u1ee3c r\u1ea5t nhi\u1ec1u d\u00f2ng code. Ta kh\u00f4ng c\u1ea7n vi\u1ebft \u00a0 Async\/await gi\u00fap ta x\u1eed l\u00fd c\u1ea3 error \u0111\u1ed3ng b\u1ed9 l\u1eabn error b\u1ea5t \u0111\u1ed3ng b\u1ed9 theo c\u00f9ng 1 c\u1ea5u tr\u00fac. T\u1ea1m bi\u1ec7t getJSON<\/code>\u00a0tr\u1ea3 v\u1ec1 m\u1ed9t promise, promise \u0111\u00f3 ch\u1ee9a 1 v\u00e0i \u0111\u1ed1i t\u01b0\u1ee3ng JSON. Ta c\u1ea7n g\u1ecdi h\u00e0m \u0111\u00f3, log c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng JSON ra, sau \u0111\u00f3 tr\u1ea3 v\u1ec1\u00a0
\"done\"<\/code>.<\/p>\n
\n\n
\n \n \n \n\n
\n \n \n \n
async<\/code> ph\u00eda tr\u01b0\u1edbc. T\u1eeb kh\u00f3a\u00a0
await<\/code> ch\u1ec9 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng b\u00ean trong h\u00e0m \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a v\u1edbi\u00a0
async<\/code>. B\u1ea5t c\u1ee9 h\u00e0m
async<\/code> n\u00e0o c\u0169ng s\u1ebd tr\u1ea3 v\u1ec1 1 promise m\u1ed9t c\u00e1ch kh\u00f4ng t\u01b0\u1eddng minh, v\u00e0 gi\u00e1 tr\u1ecb resolve c\u1ee7a promise s\u1ebd l\u00e0 b\u1ea5t c\u1ee9 c\u00e1i g\u00ec m\u00e0 h\u00e0m return\u00a0(trong tr\u01b0\u1eddng h\u1ee3p n\u00e0y l\u00e0 chu\u1ed7i
\"done\"<\/code> ).<\/li>\n
async<\/code><\/li>\n<\/ol>\n
\n\n
\n \n \n await getJSON()<\/code> c\u00f3 ngh\u0129a l\u00e0 l\u1eddi g\u1ecdi
console.log<\/code> s\u1ebd ch\u1edd \u0111\u1ebfn khi promise
getJSON()<\/code> \u0111\u01b0\u1ee3c x\u1eed l\u00fd v\u00e0 tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb.<\/p>\n
\u01afu \u0111i\u1ec3m c\u1ee7a Async\/await l\u00e0 g\u00ec?<\/b><\/span><\/h2>\n
1. Code ng\u1eafn v\u00e0 s\u1ea1ch h\u01a1n<\/b><\/span><\/h3>\n
.then<\/code>,\u00a0t\u1ea1o 1 h\u00e0m anonimous \u0111\u1ec3 x\u1eed l\u00fd response, hay l\u00e0 \u0111\u1eb7t t\u00ean
data<\/code>\u00a0cho 1 bi\u1ebfn ta kh\u00f4ng s\u1eed d\u1ee5ng. Ta tr\u00e1nh \u0111\u01b0\u1ee3c c\u00e1c kh\u1ed1i code l\u1ed3ng nhau. Nh\u1eefng l\u1ee3i \u00edch nho nh\u1ecf n\u00e0y s\u1ebd t\u00edch t\u1ee5 d\u1ea7n d\u1ea7n trong nh\u1eefng \u0111o\u1ea1n code l\u1edbn, nh\u1eefng project th\u1eadt v\u00e0 s\u1ebd tr\u1edf n\u00ean r\u1ea5t \u0111\u00e1ng gi\u00e1.<\/p>\n
2. Error handling<\/b><\/span><\/h3>\n
try\/catch<\/code>. V\u1edbi \u0111o\u1ea1n code d\u01b0\u1edbi d\u00f9ng promise,\u00a0
try\/catch<\/code>\u00a0s\u1ebd kh\u00f4ng b\u1eaft \u0111\u01b0\u1ee3c l\u1ed7i n\u1ebfu
JSON.parse<\/code>l\u1ed7i do n\u00f3 x\u1ea3y ra b\u00ean trong promise. Ta c\u1ea7n g\u1ecdi \u00a0
.catch<\/code>\u00a0b\u00ean trong promise v\u00e0 l\u1eb7p l\u1ea1i code x\u1eed l\u00fd error, \u0111i\u1ec1u m\u00e0 ch\u1eafc ch\u1eafn s\u1ebd tr\u1edf n\u00ean r\u1eafc r\u1ed1i h\u01a1n c\u1ea3\u00a0
console.log<\/code>trong \u0111o\u1ea1n code production.<\/p>\n
\n\n
\n \n