我正在尝试理解 JavaScript 异步/等待。如何重写以下内容,使输出为“Hi”然后“Bye”而不是“Bye”然后“Hi”:
JSFiddle https://jsfiddle.net/tp7tjhvL/1/
sayHi()
.then(sayBye);
async function sayHi() {
await setTimeout(function() {
$("#myOutput").text('hi');
}, 1000);
}
async function sayBye() {
$("#myOutput").text('bye');
}
为了等待setTimeout
它需要被包装到 Promise 中。然后使用 async/await 你可以扁平化你的代码,然后在没有 Promise 然后 API 的情况下编写它:
(async () => { // await has to be inside async function, anonymous in this case
await sayHi()
sayBye()
})()
async function sayHi() {
return new Promise(function (resolve) {
$("#myOutput").text('hi');
setTimeout(function() {
resolve()
}, 1000)
});
}
async function sayBye() {
$("#myOutput").text('bye');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myOutput"></div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)