Javascript 如何将函数与等待分离
我只是从php切换到全职js。我试图清理javascript函数中的代码,但仍然混淆了如何处理它Javascript 如何将函数与等待分离,javascript,node.js,adonis.js,Javascript,Node.js,Adonis.js,我只是从php切换到全职js。我试图清理javascript函数中的代码,但仍然混淆了如何处理它 for(let i in allEmpData) { let emp = allEmpData[i] if(empData == null) { const addEmp = new Employee() this.addEmpFn(addEmp, emp) } if(empData != null) { this.addEmpFn
for(let i in allEmpData) {
let emp = allEmpData[i]
if(empData == null) {
const addEmp = new Employee()
this.addEmpFn(addEmp, emp)
}
if(empData != null) {
this.addEmpFn(empData, emp)
}
}
我之所以调用函数addEmpFn,是因为我将创建/更新代码放在了函数addEmpFn中
addEmpFn(empData, emp) {
empData.name = emp.name
return await empData.save()
}
错误是这样的:
等待意外的令牌返回
我想做类似的事情,但在干净的代码中,使用单独的函数
for(let i in allEmpData) {
const empData = await Employee.query()
.where('id',1)
.first();
let emp = allEmpData[i]
if(empData == null) {
const addEmp = new Employee()
addEmp.name = emp.name
return await empData.save()
}
if(empData != null) {
empData.name = emp.name
return await empData.save()
}
}
您需要将函数分配为异步,如下所示:
async addEmpFn(empData, emp) {
empData.name = emp.name
return await empData.save()
}
await关键字仅在异步函数中有效。因此,在函数声明之前,必须先编写async关键字 像这样,
async addEmpFn(empData, emp) {
empData.name = emp.name
return await empData.save()
}
试着在你的功能之前提到async,就像下面我提到的那样
async addEmpFn(empData, emp) {
empData.name = emp.name;
return await empData.save();
}
在这里,您实际上不需要异步等待,当您希望等待承诺得到解决时,需要异步等待 在JS中,return-await也是一种反模式,直到您不想使用try-catch-around 下面的代码是要做的,工作原理与公认的答案相同 addEmpFnempData,emp{ empData.name=emp.name 返回empData.save
}谢谢,这是工作,但太多人给了我答案。我得庆祝1号。我非常感谢你的帮助。。你们提出的问题很重要…谢谢你们,这是工作,但太多人给我答案了。我得庆祝1号。非常感谢您的帮助为什么需要异步等待?谢谢,我只是想写同样的东西。