📅  最后修改于: 2023-12-03 15:27:25.091000             🧑  作者: Mango
Javascript是一种用于构建Web应用程序的流行编程语言。在Web开发中,经常需要在代码执行期间等待某些事件完成,例如AJAX请求完成或用户输入。本文将介绍Javascript中不同等待事件的方法。
setTimeout()
函数可以等待指定的时间(毫秒),然后调用一个回调函数。例如,以下代码将在1秒后在控制台中输出“Hello World!”:
setTimeout(() => {
console.log('Hello World!');
}, 1000);
类似的,setInterval()
函数可以每隔一段时间(毫秒)调用一个回调函数。例如,以下代码将每秒在控制台中输出当前时间:
setInterval(() => {
console.log(new Date());
}, 1000);
需要注意的是,setTimeout()
和setInterval()
函数可能比指定的时间稍晚调用回调函数,因为它们需要等待Javascript引擎空闲时才能执行。
Promise是Javascript异步编程中的一种解决方案。它代表了一个异步操作的最终完成或失败,可以通过then()
和catch()
方法处理。要等待Promise完成,可以使用await
关键字,并将调用Promise的函数标记为异步函数。
例如,以下代码使用Promise获取一个JSON文件,并在获取后打印它的内容:
async function getJson(url) {
const response = await fetch(url);
const json = await response.json();
console.log(json);
}
使用async/await可以更简洁地处理Promise。与Promise的.then().catch()
方法不同,async/await可以像同步代码一样编写异步代码,并且可以使用try-catch
语句捕获异常。
例如,以下代码使用async/await等待1秒,然后打印“Hello World!”:
async function waitForOneSecond() {
await new Promise(resolve => setTimeout(resolve, 1000));
console.log('Hello World!');
}
需要注意的是,async/await只能用于处理Promise,并且必须在支持ECMAScript 2017的Javascript引擎中运行。