Chờ đợi lời hứa nodejs

  1. Nhà
  2. Nút JS
  3. Async/Await là gì ?

Show

2 năm trước 2 năm trước

Nút JS

Phổ biến chiến thắng vui vẻ

Async/Await là gì ?

Trong Javascript, Callback có rất nhiều nhược điểm. Khi ta có nhiều thao tác bất đồng bộ, các cuộc gọi lại phải chờ nhau thực hiện, thời gian để hoàn thành sẽ bị kéo dài hơn. Ngoài ra, việc viết các cuộc gọi lại lồng nhau cũng làm cho mã nguồn của ta rắc rối và khó bảo trì. Cuối cùng, trong phiên bản ES7 gần đây nhất, Async / Await đã được bổ sung để viết mã bất đồng bộ trong JavaScript tốt hơn, mã dễ nhìn hơn và dễ sử dụng hơn. 5 phút


Chờ đợi lời hứa nodejs

bởi HocWeb VN 2 năm trước 2 năm trước

5. 6klượt xem

1065

  • 1. 6K cổ phiếu
  • Facebook

1. 6k lượt chia sẻ, 1065 điểm

nội dung

Async / Await là gì?

  • Async / Await là một tính năng của JavaScript giúp chúng ta làm việc với các hàm bất đồng bộ theo cách thú vị hơn và dễ hiểu hơn. Nó được xây dựng dựa trên Promise và tương thích với tất cả các Promise dựa trên API. in which
  • Async – khai báo một hàm bất đồng bộ (async function someName(){…})
    • Biến tự động biến thông thường thành một lời hứa
    • Khi gọi tới hàm không đồng bộ, nó sẽ xử lý mọi thứ và được trả về kết quả trong hàm của nó
    • Async cho phép sử dụng Await with JavaScript
  • Await – tạm dừng việc thực thi các hàm không đồng bộ. (Kết quả biến đổi = đang chờ someAsyncCall()
    • Khi được đặt trước một Promise, nó sẽ đợi cho đến khi Promise kết thúc và trả về kết quả
    • Await only doing work with Promises, it is not active with callbacks
    • Await only could be used side in async function

Dưới đây là một ví dụ đơn giản mà hy vọng sẽ làm rõ những điều trên

  • Giả sử chúng ta muốn lấy một số tệp JSON từ máy chủ của mình. Chúng ta sẽ viết một hàm sử dụng thư viện axios và gửi yêu cầu HTTP GET đến Https. //tutorialzine. com/misc/files/ví dụ. json. Chúng ta phải đợi phản hồi từ máy chủ, đây là một yêu cầu HTTP không đồng bộ
  • Dưới đây chúng ta sẽ viết cùng một chức năng với 2 cách khác nhau. Cách thứ 1 với Promise và cách thứ 2 với Async / Await
// cách 1:
function getJSON() {
    return new Promise(function (resolve) {
        axios.get('https://tutorialzine.com/misc/files/example.json')
            .then(function (json) {
                resolve(json);
            });
    });
}
// cách 2:
// Async/Await approach
// The async keyword will automatically create a new Promise and return it.
async function getJSONAsync() {
    let json = await axios.get('https://tutorialzine.com/misc/files/example.json');
    return json;
}
  • Cả hai hàm bên trên đều thực hiện một chức năng hoàn toàn giống nhau – cả hai đều trả về Promise và giải quyết phản hồi JSON trên JavaScript từ axios. Tuy nhiên, phiên bản Async / Await ngắn hơn và dễ đọc hơn
  • We could call async function of them ta as after
    getJSONAsync().then( function(result) {
        // Do something with result.
    });

Async / Await có làm cho thời gian hứa hẹn bị lỗi không?

  • Không hoàn toàn. Khi làm việc với Async / Await, thật ra chúng ta vẫn đang sử dụng các Promise. Vì thế, kể cả khi đang sử dụng Async / Await cần một sự hiểu biết tốt về Promises
  • Ngoài ra, có những trường hợp không sử dụng Async / Await been và chúng ta phải sử dụng Promise. Ví dụ như khi chúng ta cần gọi nhiều thao tác bất đồng bộ và đợi cho tất cả chúng kết thúc. Nếu chúng ta thử và làm điều này với sự không đồng bộ và chờ đợi, Điều gì sẽ xảy ra. Hãy xem ví dụ dưới đây các bạn sẽ thấy
async function getABC() {
    let A = await getValueA();
    let B = await getValueB();
    let C = await getValueC();
    return A * B * C;
}
  • Mỗi lần gọi tới hàm await sẽ đợi cho đến khi hàm await trước đó kết thúc. Vì các chức năng sẽ chờ đợi và thực hiện tuần tự từng cái một, toàn bộ chức năng sẽ mất 9 giây để thực hiện xong hàm từ đầu đến cuối (2 + 4 + 3)
  • Đây không phải là một giải pháp tối ưu vì A, B và C không phụ thuộc vào nhau, chúng ta không cần biết giá trị của A trước khi chúng ta có được B. Vì vậy, chúng ta có thể lấy chúng cùng một lúc và thời gian chờ đợi sẽ được giảm bớt đi.
  • Trong trường hợp như thế này, sử dụng Promise sẽ thích hợp hơn. Để gửi tất cả các yêu cầu cùng lúc, chúng ta sử dụng Promise. tất cả các(). Việc sử dụng Promise. all() sẽ chắc chắn rằng chúng ta có tất cả các kết quả trước khi tiếp tục thực thi mã, nhưng cuộc gọi đến các hàm bất đồng bộ sẽ được chạy song song không phải tuần tự từng cái một
async  function  getABC () {
      let results = await Promise.all([ getValueA, getValueB, getValueC ]);
      return results.reduce((total,value) => total * value);
    }
  • Bằng cách này, thời gian thực thi hàm sẽ mất nó hơn. Hàm getValueA và getValueC sẽ hoàn thành trước khi getValueB hoàn thành. Thay vì phải mất 9 giây để đợi từng hàm trả về giá trị. Chúng ta sẽ chỉ mất 4 giây để chờ cả 3 hàm trả về giá trị

Xử lý lỗi trong Async / Await JavaScript

  • Một điều tuyệt vời khác là cho phép bắt lỗi không mong đợi bằng cách sử dụng thử / bắt. Chúng ta chỉ cần để các cuộc gọi đang chờ của chúng ta vào trong khối try/catch như sau
    async function doSomethingAsync(){
        try {
            // This async call may fail.
            let result = await someAsyncCall();
        }
        catch(error) {
            // If it does we will catch the error here.
        }
    }
  • Mệnh đề catch sẽ xử lý các lỗi gây ra bởi các hàm bất đồng bộ hoặc bất kỳ lỗi nào chúng ta có thể viết bên trong khối try
  • Trong một số vấn đề, chúng ta cũng có thể bắt lỗi khi đang thực hiện chức năng async. Vì tất cả các hàm async đều trả về Promise, chúng ta chỉ cần gọi hàm bổ sung. catch() khi gọi chúng
    // Async function without a try/catch block.
    async function doSomethingAsync(){
        // This async call may fail.
        let result = await someAsyncCall();
        return result;
    }
    // We catch the error upon calling the function.
    doSomethingAsync().
        .then(successHandler)
        .catch(errorHandler);
  • tùy thuộc vào các vấn đề cụ thể, chúng ta sẽ sử dụng try/catch hoặc. catch() để bắt và xử lý lỗi. Tuy nhiên, chúng ta không nên sử dụng cả 2 cùng một lúc vì có thể xảy ra lỗi

Hỗ trợ trình duyệt

  • Async / Await có thể sử dụng trong hầu hết các trình duyệt chính. Ngoại trừ IE11 – tất cả các trình duyệt sẽ nhận mã async/await của bạn mà không cần các thư viện bên ngoài
  • Nếu bạn sử dụng Node cũng có sử dụng async từ Node 8 trở lên. Nó sẽ trở thành LTS vào cuối năm nay
  • Nếu không đáp ứng được yêu cầu của bạn, thì cũng có một số trình chuyển đổi JavaScript như Babel, TypeScript. And library Node. js async/await cung cấp các phiên bản nền tảng riêng

Kết luận

  • Với việc bổ sung Async / Await trong ngôn ngữ JavaScript là một bước nhảy vọt về khả năng dễ đọc và dễ sử dụng cho người mới bắt đầu với trình lập JavaScript và người đã có kinh nghiệm
  • Để hiểu rõ hơn về Async – Await hãy tham khảo NodeJS là gì ?

Chờ đợi lời hứa nodejs

HocWeb VN

Bài viết này được sưu tầm và tổng hợp từ nhiều nguồn trên Internet

Nếu có gì chưa hiểu thì inbox messenger bên dưới mình hỗ trợ thêm nhé

Phân trang bài viết

  • Bài trướcBài trước
  • Bài tiếp theoTiếp theo

jav

Thích nó?

1065

  • 1. 6K cổ phiếu
  • Facebook

1. 6k lượt chia sẻ, 1065 điểm

Phản ứng của bạn là gì?

ghét bỏ

0

bối rối

1

Thất bại

0

niềm vui

3

lập dị

3

yêu và quý

0

cười lớn

3

Chúa ơi

1

chiến thắng

4

  • Bài trước

    Chờ đợi lời hứa nodejs

    10 cách để viết api NodeJS chuẩn cho mẹ

    bởi HocWeb VN

  • Bài tiếp theo

    Server-Side và Client-side rendering

    bởi HocWeb VN

You can you like

  • Xu hướng vui vẻ

    9. 7k1088

    Chờ đợi lời hứa nodejs

    nút JS javascript

    Hướng dẫn sử dụng JavaScript để lấy API tìm nạp dữ liệu từ Ngân hàng Vương quốc Anh

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

More than. Nút JS

  • thắng thất bại

    2k1093

    Chờ đợi lời hứa nodejs

    Node JSnodejs , tự học nodejs

    Node Autocad. js cơ bản để đi phỏng vấn (13 bài) – 3 – Node nền tảng. js

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

  • tình yêu chiến thắng

    1. 9k1099

    Chờ đợi lời hứa nodejs

    Node JSnodejs , tự học nodejs

    Node Autocad. js cơ bản để đi phỏng vấn (13 bài) – 2 – Install Node. js, npm, Mã VS

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

  • Xu hướng chiến thắng

    4k1081

    Chờ đợi lời hứa nodejs

    Node JSnodejs , tự học nodejs

    Node Autocad. js cơ bản để đi phỏng vấn (13 bài) – 1 – Tổng quan

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

  • thắng ghét

    2. 4k1071

    Chờ đợi lời hứa nodejs

    Node JSiot , mqtt , nodejs , raspberry pi

    Create ứng dụng Node. js IOT trên Raspberry Pi sử dụng giao thức MQTT

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

  • Xu hướng chiến thắng

    6. 9k1048

    Chờ đợi lời hứa nodejs

    Nút JSnodejs

    Cách cài đặt NodeJS với Ubuntu 20. 04

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

  • Xu hướng chiến thắng

    6. 3k1063

    Chờ đợi lời hứa nodejs

    Node JSapi , express , nodejs , restful

    Từng bước tạo RESTful API với NodeJS , Express, MySQL

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

Nhiều bài hơn nữa

  • thắng thất bại

    2k1093

    Chờ đợi lời hứa nodejs

    Node JSnodejs , tự học nodejs

    Node Autocad. js cơ bản để đi phỏng vấn (13 bài) – 3 – Node nền tảng. js

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

  • tình yêu chiến thắng

    1. 9k1099

    Chờ đợi lời hứa nodejs

    Node JSnodejs , tự học nodejs

    Node Autocad. js cơ bản để đi phỏng vấn (13 bài) – 2 – Install Node. js, npm, Mã VS

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

  • Xu hướng chiến thắng

    4k1081

    Chờ đợi lời hứa nodejs

    Node JSnodejs , tự học nodejs

    Node Autocad. js cơ bản để đi phỏng vấn (13 bài) – 1 – Tổng quan

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

  • thắng ghét

    2. 4k1071

    Chờ đợi lời hứa nodejs

    Node JSiot , mqtt , nodejs , raspberry pi

    Create ứng dụng Node. js IOT trên Raspberry Pi sử dụng giao thức MQTT

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

  • Xu hướng chiến thắng

    6. 9k1048

    Chờ đợi lời hứa nodejs

    Nút JSnodejs

    Cách cài đặt NodeJS với Ubuntu 20. 04

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

  • Xu hướng chiến thắng

    6. 3k1063

    Chờ đợi lời hứa nodejs

    Node JSapi , express , nodejs , restful

    Từng bước tạo RESTful API với NodeJS , Express, MySQL

    Chờ đợi lời hứa nodejs

    của Vũ Đức Phương

Chờ đợi lời hứa nodejs

HocWeb VN

Bài viết này được sưu tầm và tổng hợp từ nhiều nguồn trên Internet

Nếu có gì chưa hiểu thì inbox messenger bên dưới mình hỗ trợ thêm nhé

Nóng bức

  • 1

    Chờ đợi lời hứa nodejs

    Hướng dẫn Triển khai website NodeJS lên VPS

  • 2

    Chờ đợi lời hứa nodejs

    Hướng dẫn sử dụng JavaScript để lấy API tìm nạp dữ liệu từ Ngân hàng Vương quốc Anh

  • 3

    Chờ đợi lời hứa nodejs

    Node Autocad. js cơ bản để đi phỏng vấn (13 bài) – 1 – Tổng quan

  • 4

    Chờ đợi lời hứa nodejs

    Từng bước tạo RESTful API với NodeJS , Express, MySQL

  • 5

    Hướng dẫn triển khai React với Docker

Liên hệ