私はasync/await
でこれをやろうとしていますが、解決策はあります。最後.insertBefore()
完了するまで.detach()
を実行しないようにJquery ajaxコールバックでasyncが待機していますか?
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()
})
})
})
:誰もが、私はこれを変えることができる方法を知っていますか?
'forEach'は同期です。非同期関数についてはわかりません。また、「待つ」と約束を混ぜるのは変です。 –
うーん、私はあなたが 'foo.forEach(async ...)'(各インターレーションでブロックする)ことはできますが 'async foo.forEach(...)'はできないと思っていました)..どんな場合でも、私の心配はここではAJAXコールバックです。 –