async function* expression
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
Các từ khóa async function* có thể được dùng để định nghĩa một async generator function bên trong một biểu thức.
Bạn cũng có thể định nghĩa async generator function bằng cách sử dụng async function* declaration.
Try it
async function joinAll(generator) {
let str = "";
for await (const val of generator()) {
str += val;
}
return str;
}
joinAll(async function* () {
yield await Promise.resolve("a");
yield await Promise.resolve("b");
yield await Promise.resolve("c");
}).then((str) => console.log(str));
// Expected output: "abc"
Cú pháp
async function* (param0) {
statements
}
async function* (param0, param1) {
statements
}
async function* (param0, param1, /* …, */ paramN) {
statements
}
async function* name(param0) {
statements
}
async function* name(param0, param1) {
statements
}
async function* name(param0, param1, /* …, */ paramN) {
statements
}
Note:
Một expression statement không thể bắt đầu bằng các từ khóa async function để tránh nhầm lẫn với khai báo async function*. Các từ khóa async function chỉ bắt đầu một biểu thức khi chúng xuất hiện trong ngữ cảnh không thể chấp nhận câu lệnh.
Tham số
nameOptional-
Tên của function. Có thể bỏ qua, trong trường hợp đó function là ẩn danh. Tên chỉ có phạm vi cục bộ trong phần thân function.
paramNOptional-
Tên của tham số chính thức cho function. Về cú pháp của tham số, xem tài liệu tham khảo Functions.
statementsOptional-
Các câu lệnh tạo nên phần thân của function.
Mô tả
Biểu thức async function* rất tương tự và có cú pháp gần giống với async function* declaration. Sự khác biệt chính giữa biểu thức async function* và khai báo async function* là tên function, có thể được bỏ qua trong biểu thức async function* để tạo các function ẩn danh. Biểu thức async function* có thể được dùng như một IIFE (Immediately Invoked Function Expression) chạy ngay khi nó được định nghĩa, cho phép bạn tạo một async iterable object tạm thời. Xem thêm chương về functions để biết thêm thông tin.
Ví dụ
>Sử dụng biểu thức async function*
Ví dụ sau đây định nghĩa một async generator function không tên và gán nó cho x. Function yield bình phương của đối số:
const x = async function* (y) {
yield Promise.resolve(y * y);
};
x(6)
.next()
.then((res) => console.log(res.value)); // 36
Đặc tả
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-async-generator-function-definitions> |