Để sử dụng await, ngữ cảnh thực thi của nó cần phải asyncvề bản chất
Như đã nói, bạn cần xác định bản chất của bạn là executing contextnơi bạn sẵn sàng thực hiện awaitmột nhiệm vụ trước bất cứ việc gì.
Chỉ cần đặt asynctrước fnkhai báo mà asynctác vụ của bạn sẽ thực thi.
var start = async function(a, b) {
// Your async task will execute with await
await foo()
console.log('I will execute after foo get either resolved/rejected')
}
Giải trình:
Trong câu hỏi của bạn, bạn sẽ nhập một methodmà là asynchronoustrong tự nhiên và sẽ thực hiện song song. Nhưng nơi bạn đang cố gắng thực thi asyncphương thức đó nằm bên trong một phương thức khác execution contextmà bạn cần xác định asyncđể sử dụng await.
var helper = require('./helper.js');
var start = async function(a,b){
....
const result = await helper.myfunction('test','test');
}
exports.start = start;
Tự hỏi điều gì đang diễn ra dưới mui xe
awaitsử dụng các phương thức / chức năng trả về hứa hẹn / tương lai / nhiệm vụ và asyncđánh dấu một phương thức / chức năng có khả năng sử dụng await.
Ngoài ra, nếu bạn quen thuộc promises,await thực sự đang thực hiện cùng một quy trình hứa hẹn / giải quyết. Tạo một chuỗi lời hứa và thực hiện nhiệm vụ tiếp theo của bạn trong resolvecuộc gọi lại.
Để biết thêm thông tin, bạn có thể tham khảo MDN DOCS .
awaitchỉ có thể được sử dụng bên trong mộtasynchàm. Đó là,awaitlàm cho một hàm không đồng bộ, vì vậy nó phải được khai báo như vậy.