javascript - 异步等待 Jquery ajax 回调?

标签 javascript jquery async-await ecmascript-2017

我正在尝试使用 async/await 来做到这一点,但任何解决方案都很好。任何人都知道我该如何改变它:

series[group].forEach(async (ele, j) => {
    await $.ajax({
        url: `templates/ele${ele}.template.html`,
        success: function (data) {
          const $copyEl = $(el).clone()
          const r = new RegExp('\\{\\{\\s*' + item + '\\s*\\}\\}', 'g')
          const html = $copyEl.html().replace(r, data)

          $(html).insertBefore(parent)
        },
        error: function (e) {
          console.error(e)
        }           
      }).then(() => {
        $(parent).detach()
        if(i + 1 === outer_last && j + 1=== inner_last)
          template_callback()
      })
  })
})

在最后一个 .insertBefore() 完成之前不运行 .detach()

最佳答案

将数组中的每个元素映射到 Promise,然后依赖 Promise.all:

const promises = series[group].map((ele) => (
    $.ajax({
        url: `templates/ele${ele}.template.html`,
    }).then((data) => {
        const $copyEl = $(el).clone()
        const r = new RegExp('\\{\\{\\s*' + item + '\\s*\\}\\}', 'g')
        const html = $copyEl.html().replace(r, data)

        $(html).insertBefore(parent)
    }, (e) => {
        console.error(e)
    })
))

Promise.all(promises).then(() => {
  $(parent).detach()
})

关于javascript - 异步等待 Jquery ajax 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42167165/

相关文章:

javascript - 为什么文本类型上的 querySelectorAll 会丢失隐式文本类型的输入?

javascript - 如何在php标签内编写javascript

javascript - 将元素更改为文本区域不起作用

javascript - 每次点击/提交按钮接受时,Cookie 消息仅显示一次

jquery-ui - 如何在 cfc 中用 Coldfusion 替换 AJAX 帖子

c# - 执行 Task.WhenAny 时如何产生返回项

javascript - 如何从 puppeteer 异步函数内部返回值(对象)?

javascript - 命名空间和继承 : super constructor with JavaScript chain of responsibility

javascript - 我如何摆脱 slideToggle() 上的跳转?

javascript - 如何在异步方法中使用await内部await并在最后返回结果?