如何将功能与等待分开

How to seperate function with await

我刚刚从 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(empData, emp)
    }
 }

我调用函数 addEmpFn 是因为我在其中放入了 create/update 代码,这里是我的函数 addEmpFn

 addEmpFn(empData, emp) {
    empData.name = emp.name
    return await empData.save()
  }

错误说:

意外令牌return等待

我想做这样的事情,但是在干净的代码中,单独的函数

 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();
}

这里你真的不需要 async await,当你想等待 promise 得到解决时需要 async await。

而且 return await 是 JS 中的反模式,除非你不想使用 try-catch。

下面的代码是要走的路,与接受的答案一样工作。

 addEmpFn(empData, emp) {
    empData.name = emp.name
    return empData.save()
  }