【发布时间】:2020-03-24 01:07:40
【问题描述】:
我的 async/await 示例代码无法正常工作。 我正在使用 jquery .each 循环以及 Async/await 功能,但没有按预期工作
我希望输出是:
one
John
July
Anja
two
done
但是实际输出是:
one
two
done
John
July
Anja
$(document).ready(function() {
function one() {
return new Promise(resolve => {
setTimeout(() => {
console.log("one");
resolve();
}, 500);
});
}
function two() {
return new Promise(resolve => {
setTimeout(() => {
console.log("two");
resolve();
}, 300);
});
}
function namePrint(name) {
return new Promise(resolve => {
setTimeout(() => {
console.log(name);
resolve();
}, 400);
});
}
async function msg() {
try {
await one();
$("#myTable tr").each(async function(index, item) {
await namePrint($(this).find("#name").text());
});
await two();
console.log("done");
} catch (e) {
console.log("Error:", e);
}
}
msg();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<thead>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Email</th>
</tr>
</thead>
<tbody id="myTable">
<tr>
<td id="name">John</td>
<td>Doe</td>
<td>john@example.com</td>
</tr>
<tr>
<td id="name">July</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
<tr>
<td id="name">Anja</td>
<td>Ravendale</td>
<td>Anja@example.com</td>
</tr>
</tbody>
</table>
【问题讨论】:
-
这能回答你的问题吗? Using async/await with a forEach loop
-
问题不在于
await。问题是.each()没有等待
标签: javascript jquery async-await each