Đăng nhập
Bạn chưa có tài khoản? Đăng ký.
Bạn đã quên password?
Từ khóa async
đứng trước một hàm làm cho hàm trả về một Promise
.
Thí dụ
async function myFunction() { return "Hello"; }
Giống như
function myFunction() { return Promise.resolve("Hello"); }
Và sau đó là cách sử dụng Promise
.
myFunction().then( function(value) { // Code nếu thành công} function(value) { // Code nếu thất bại} );
Ví dụ
function myDisplayer(text) { document.getElementById('demo').innerHTML = text ; } async function myFunction() { return "Hello"; } myFunction().then( function(value) {myDisplayer(value);}, function(error) {myDisplayer(error);} );
Hoặc đơn giản hơn, vì chúng ta mong đợi một giá trị bình thường (phản hồi bình thường, không phải lỗi).
Ví dụ
function myDisplayer(text) { document.getElementById('demo').innerHTML = text ; } async function myFunction() { return "Hello"; } myFunction().then( function(value) {myDisplayer(value);}, );
Từ khóa await
đứng trước một hàm làm cho hàm chờ một Promise
.
var value = await Promise;
Các từ khóa await
chỉ có thể được sử dụng bên trong một hàm async
.
Chúng ta hãy đi từ từ và học cách sử dụng nó.
Ví dụ
async function myDisplay() { var myPromise = new Promise(function(resolve, reject) { resolve("Hello JavaScript!"); }); document.getElementById('demo').innerHTML = await myPromise ; } myDisplay();
Ví dụ không cần đối số reject
async function myDisplay() { var myPromise = new Promise(function(resolve) { resolve("Hello JavaScript!"); }); document.getElementById('demo').innerHTML = await myPromise ; } myDisplay();
Ví dụ chờ hết một thời gian
async function myDisplay() { var myPromise = new Promise(function(resolve) { setTimeout(function() {resolve("Hello JavaScript!");},3000); }); document.getElementById('demo').innerHTML = await myPromise ; } myDisplay();
Ví dụ chờ một file bên ngoài
async function getFile() { var myPromise = new Promise(function(resolve) { var req = new XMLHttpRequest(); req.open('GET', "/exampleJS/mycar.html"); req.onload = function() { if (req.status == 200) { resolve(req.response); } else { resolve("File not Found"); } }; req.send(); }); document.getElementById("demo").innerHTML = await myPromise; } getFile();
ECMAScript 2017 đã giới thiệu các từ khóa JavaScript async
và await
.
Bảng sau đây xác định phiên bản trình duyệt đầu tiên có hỗ trợ đầy đủ cho cả hai.
Chrome 55 | Edge 15 | Firefox 52 | Safari 11 | Opera 42 |
Dec, 2016 | Apr, 2017 | Mar, 2017 | Sep, 2017 | Dec, 2016 |