ในการใช้งานawaitบริบทการดำเนินการต้องเป็นไปasyncตามธรรมชาติ
ตามที่กล่าวไว้คุณต้องกำหนดลักษณะของคุณexecuting contextว่าคุณเต็มใจที่จะawaitทำงานก่อนสิ่งใด
เพียงวางasyncก่อนการfnประกาศที่asyncงานของคุณจะดำเนินการ
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')
}
คำอธิบาย:
ในคำถามของคุณคุณกำลังนำเข้าสิ่งmethodที่มีอยู่asynchronousในธรรมชาติและจะดำเนินการควบคู่กันไป แต่ที่คุณกำลังพยายามที่จะดำเนินการว่าasyncวิธีการที่อยู่ภายในที่แตกต่างกันexecution contextซึ่งคุณจำเป็นต้องกำหนดที่จะใช้asyncawait
var helper = require('./helper.js');
var start = async function(a,b){
....
const result = await helper.myfunction('test','test');
}
exports.start = start;
สงสัยว่ามีอะไรอยู่ใต้ฝากระโปรง
awaitใช้วิธีการ / ฟังก์ชันของสัญญา / อนาคต / การส่งคืนงานและasyncทำเครื่องหมายวิธีการ / ฟังก์ชันว่าสามารถใช้ await ได้
นอกจากนี้ถ้าคุณมีความคุ้นเคยกับpromises, awaitเป็นจริงทำกระบวนการเดียวกันของสัญญา / แก้ไข สร้างห่วงโซ่แห่งคำสัญญาและดำเนินงานต่อไปในการresolveติดต่อกลับ
สำหรับข้อมูลเพิ่มเติมคุณสามารถดูMDN DOCS
awaitสามารถใช้ได้ภายในasyncฟังก์ชันเท่านั้น นั่นคือawaitทำให้ฟังก์ชันเป็นแบบอะซิงโครนัสดังนั้นจึงต้องมีการประกาศเช่นนี้