Ошибка скобок JS / jQuery, которую я не могу найти - PullRequest
0 голосов
/ 27 июня 2018

Хорошо, вот функция, над которой я работаю, и строка let выдаёт мне эту ошибку:

SyntaxError: отсутствует) после списка аргументов

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
}

Если я закомментирую строку, код обрабатывается нормально, но я не могу понять, в чем заключается ошибка в этой строке.

Ответы [ 5 ]

0 голосов
/ 27 июня 2018

Ошибка, которую вы получаете, находится точно в await getTaskLogs, и для ее решения ваш код должен выглядеть примерно так:

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

Вы можете иметь только await внутри async функций.

0 голосов
/ 27 июня 2018

Предполагая, что ваш env поддерживает async / await, ваш обработчик кликов должен быть асинхронным, чтобы использовать await.

Изменить

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

К

$(t).on('click', async function() {
0 голосов
/ 27 июня 2018

Вы используете 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
}

Для дальнейшего объяснения, пожалуйста, прочитайте это .

0 голосов
/ 27 июня 2018

вы используете , ожидайте без ключевого слова async,

Оператор ожидания используется для ожидания обещания. Он может использоваться только внутри асинхронной функции.

$(t).on('click', async function() {
    let l = JSON.parse(await getTaskLogs(jobID, taskID, lt))
    console.log("click")
})
0 голосов
/ 27 июня 2018

Эта строка вызывает ошибку?

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

Если так, то есть две возможные проблемы:

1) Вы работаете в среде, которая еще не поддерживает async / await (это довольно новая функция для javascript)
2) Или вы жалуетесь, что вы использовали await в неасинхронной функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...