Javascript có luôn được thực thi tuần tự không?

Nó có thể không đồng bộ. Nó có thể là chức năng. Nó có thể hướng đối tượng. Nó có thể là phía khách hàng. Nó có thể là phía máy chủ. Danh sách cứ kéo dài

Bài viết này sẽ tập trung vào JavaScript không đồng bộ

Nhưng chờ đã, JavaScript là ngôn ngữ đồng bộ

Điều này có nghĩa là chỉ có thể thực hiện một thao tác tại một thời điểm. Nhưng đó không phải là toàn bộ bức tranh ở đây. Có nhiều cách JavaScript cung cấp cho chúng ta khả năng làm cho nó hoạt động như một ngôn ngữ không đồng bộ. Một trong số đó là với mệnh đề Async-Await

Không đồng bộ đang chờ là gì?

Async và Await là phần mở rộng của lời hứa. Nếu bạn chưa rõ các khái niệm về Promise, bạn có thể tham khảo bài viết trước của tôi Cách viết Promise trong JavaScript

Không đồng bộ

Các chức năng không đồng bộ cho phép chúng tôi viết mã dựa trên lời hứa như thể nó đồng bộ, nhưng không chặn luồng thực thi. Nó hoạt động không đồng bộ thông qua vòng lặp sự kiện. Các chức năng không đồng bộ sẽ luôn trả về một giá trị. Việc sử dụng

async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
3 chỉ ngụ ý rằng một lời hứa sẽ được trả lại và nếu một
async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
4 không được trả lại, JavaScript sẽ tự động gói nó trong một
async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
4 đã giải quyết với giá trị của nó

async function firstAsync[] {
return 27;
}

firstAsync[].then[alert]; // 27

Chạy đoạn mã trên cho đầu ra cảnh báo là 27, điều đó có nghĩa là một

async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
4 đã được trả về, nếu không thì phương thức
async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
0 đơn giản là không thể thực hiện được

Chờ đợi

Các toán tử chờ đợi được sử dụng để chờ một Lời hứa. Nó chỉ có thể được sử dụng bên trong một khối Async. Từ khóa Await làm cho JavaScript đợi cho đến khi lời hứa trả về kết quả. Cần lưu ý rằng nó chỉ làm cho khối chức năng

async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
3 chờ đợi chứ không phải toàn bộ chương trình được thực thi

Khối mã dưới đây cho thấy việc sử dụng Async Await cùng nhau

async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
Những điều cần nhớ khi sử dụng Async Await

Chúng tôi không thể sử dụng từ khóa
async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
2 bên trong các chức năng thông thường

function firstAsync[] {
let promise = Promise.resolve[10];
let result = await promise; // Syntax error
}

Để hàm trên hoạt động bình thường, chúng ta cần thêm

async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
3 trước hàm
async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
4

Async Await thực hiện tuần tự

Không hẳn là một điều xấu, nhưng việc thực thi song song sẽ nhanh hơn nhiều

Ví dụ

async function sequence[] {
await promise1[50]; // Wait 50ms…
await promise2[50]; // …then wait another 50ms.
return "done!";
}

Ở trên mất 100 mili giây để hoàn thành, không phải là một lượng thời gian lớn nhưng vẫn chậm

Điều này là do nó đang xảy ra theo trình tự. Hai lời hứa được trả lại, cả hai đều mất 50 mili giây để hoàn thành. Lời hứa thứ hai chỉ thực hiện sau khi lời hứa đầu tiên được giải quyết. Đây không phải là một phương pháp hay vì các yêu cầu lớn có thể rất tốn thời gian. Chúng ta phải thực hiện song song

Điều đó có thể đạt được bằng cách sử dụng

async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
5

Theo MDN

Phương thức

async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
6 trả về một
async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
7 duy nhất giải quyết khi tất cả các lời hứa được chuyển thành một lần lặp đã được giải quyết hoặc khi lần lặp đó không chứa lời hứa nào. Nó từ chối với lý do của lời hứa đầu tiên từ chối

Hứa. tất cả các[]

async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
0

Hàm

async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
8 giải quyết khi tất cả các lời hứa bên trong iterable đã được giải quyết và sau đó trả về kết quả

Một phương pháp khác

async function firstAsync[] {
let promise = new Promise[[res, rej] => {
setTimeout[[] => res["Now it's done!"], 1000]
}];

// wait until the promise returns us a value
let result = await promise;

// "Now it's done!"
alert[result];
}
};
firstAsync[];
2

Async Await rất mạnh mẽ nhưng chúng đi kèm với những cảnh báo. Nhưng nếu chúng ta sử dụng chúng đúng cách, chúng sẽ giúp làm cho mã của chúng ta rất dễ đọc và hiệu quả

Tôi hy vọng bạn đã học được một cái gì đó mới. Nếu thấy bài viết hữu ích thì nhớ chia sẻ, theo dõi và ủng hộ nhé

Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter, LinkedIn và Discord

Thực thi tuần tự trong JavaScript là gì?

Về cơ bản, đó là thực thi các Tác vụ không đồng bộ theo chuỗi hoặc đồng bộ . Bản chất Java là Không đồng bộ và Node cũng vậy. Nút xử lý nhiều yêu cầu cùng một lúc bằng cách sử dụng các hàm gọi lại và vòng lặp sự kiện. Có 2 phương pháp để thực hiện các chức năng không đồng bộ khác nhau một cách đồng bộ hoặc tuần tự. 1.

JavaScript có chạy đồng bộ không?

JavaScript đồng bộ . về cơ bản, JavaScript là một ngôn ngữ đơn luồng, chặn, đồng bộ. Điều đó chỉ có nghĩa là tại một thời điểm chỉ có một hoạt động có thể được tiến hành. Đó không phải là toàn bộ câu chuyện, mặc dù.

JavaScript là đồng bộ hay không đồng bộ?

Javascript là ngôn ngữ đơn luồng đồng bộ nhưng với sự trợ giúp của vòng lặp sự kiện và lời hứa, JavaScript được sử dụng để lập trình không đồng bộ.

JavaScript có thực thi từng dòng không?

JavaScript là ngôn ngữ đơn luồng, mỗi lần chỉ thực thi một lệnh. Nó có mô hình thực thi Đồng bộ, trong đó từng dòng được thực thi theo từng dòng, từ trên xuống dưới .

Chủ Đề