【问题标题】:JS/jQuery parentheses error that I can't find我找不到的 JS/jQuery 括号错误
【发布时间】:2018-06-28 03:14:23
【问题描述】:

好的,这是我正在处理的函数,而 let 行给了我这个错误:

SyntaxError: missing ) after argument list

function buildLogRetrieval(jobID, taskID) {
  var div = document.createElement("div")
  var but = $(div).clone(true).css({
    "padding": "5px",
    "background": "black",
    "border-radius": "5px",
    "color": "white"
  })

  logButtons = ["log"]
  finishedButtons = []

  for (b in logButtons) {
    lt = logButtons[b]
    console.log(lt)
    t = but.clone(true).text(lt)

    $(t).on('click', function() {
      let l = JSON.parse(await getTaskLogs(jobID, taskID, lt))
      console.log("click")
    })

    finishedButtons.push(t)
  }
  return finishedButtons
}

如果我注释掉该行,代码处理得很好,但我似乎无法弄清楚该行中的错误是什么。

【问题讨论】:

  • 我猜这是另一个 ASI 的事情。 始终使用; 来结束语句! 并使用for..of 而不是for..in 来迭代循环...

标签: javascript jquery async-await


【解决方案1】:

您使用的 await 没有 async 关键字,

await 运算符用于等待 Promise。它只能在异步函数内部使用。

$(t).on('click', async function() {
    let l = JSON.parse(await getTaskLogs(jobID, taskID, lt))
    console.log("click")
})

【讨论】:

  • 是的,你们都搞砸了……我错过了点击函数中函数调用中的异步……我什至从未想过它需要在那里。我希望你们都认为这是一个毯子,谢谢,因为当我在工作电话时,你们都做得如此之快。谢谢!!!!
【解决方案2】:

您正在使用没有异步上下文的await。试试这个:

function buildLogRetrieval(jobID, taskID) {
    var div = document.createElement("div")
    var but = $(div).clone(true).css({"padding":"5px", "background":"black", "border-radius":"5px", "color":"white"})

    logButtons = ["log"]
    finishedButtons = []

    for(b in logButtons) {
        lt = logButtons[b]
        console.log(lt)
        t = but.clone(true).text(lt)

        $(t).on('click', async function() {
            let l = JSON.parse(await getTaskLogs(jobID, taskID, lt))
            console.log("click")
        })

        finishedButtons.push(t)
    }
    return finishedButtons
}

更多解释请阅读this

【讨论】:

    【解决方案3】:

    假设您的环境支持异步/等待,您的点击处理程序需要异步才能使用等待。

    改变

    $(t).on('click', function() {
    

    $(t).on('click', async function() {
    

    【讨论】:

      【解决方案4】:

      您遇到的错误正是在await getTaskLogs 中,要解决它,您的代码应该是这样的:

      $(t).on('click', async function() {
          let l = JSON.parse(await getTaskLogs(jobID, taskID, lt))
          console.log("click")
      })
      

      await 只能在 async 函数中使用。

      【讨论】:

        【解决方案5】:

        这是导致错误的行吗?

        let l = JSON.parse(await getTaskLogs(jobID, taskID, lt))
        

        如果是这样,那么有两个可能的问题:

        1) 您正在运行的环境尚不支持 async/await(这是 javascript 的一项全新功能)
        2)或者它抱怨你在非异步函数中使用了等待

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-01-04
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-10
          相关资源
          最近更新 更多