如何解决等待setTimeout不同步等待
我知道setTimeout
是一个异步运行的API,我想同步运行。像下面那样使用async/await
应该首先打印bla bla
,但是我首先得到bla
。
async function testing(){
console.log("testing function has been triggered");
await setTimeout(function () {
console.log("bla bla")
},4200)
console.log("bla");
}
解决方法
setTimeout
不会返回Promise
,因此您无法await
。
您可以将setTimeout
包装在一个返回Promise
的函数中,一旦计时器到期,该函数就会完成。您可以await
这个包装函数。
function createCustomTimeout(seconds) {
return new Promise((resolve,reject) => {
setTimeout(() => {
console.log('bla bla');
resolve();
},seconds * 1000);
});
}
async function testing() {
console.log('testing function has been triggered');
await createCustomTimeout(4);
console.log('bla');
}
testing();
,
async function testing(){
console.log("testing function has been triggered");
console.log(await printFunction());
console.log("bla");
}
function timeout(ms) {
return new Promise(resolve => setTimeout(resolve,ms));
}
const printFunction = async () => {
await timeout(4200);
return "bla bla"
}
testing();
如果它解决了您的问题,请给予支持,谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。