本文介绍JS中异步编辑的基础部分,包括async、promise和await。
async:标注异步方法
在JavaScript中,async关键字通常用于标注一个方法,以表明该方法是异步的。异步方法是指在执行过程中不会阻塞后续代码执行,而是会在后台进行,等待某些操作完成后再继续执行。
async function fetchData() {
// 异步操作,比如网络请求
let data = await fetch('https://api.example.com/data');
console.log(data);
}
// 调用异步方法
fetchData();
上面的例子中,fetchData是一个异步方法,它通过fetch函数异步获取数据。通过async关键字,我们可以更清晰地表明这是一个异步操作。
promise:异步方法的承诺
异步方法的返回值通常是一个promise对象。Promise是一个表示异步操作最终完成或失败的对象,它是对异步操作的一种承诺,就像支票一样。
async function fetchData() {
return new Promise((resolve, reject) => {
// 模拟异步操作
setTimeout(() => {
resolve('一些数据');
}, 2000);
});
}
// 使用Promise
fetchData().then(data => console.log(data));
上述例子中,fetchData方法返回一个Promise对象,表示异步操作的最终结果。通过调用then方法,我们可以在异步操作完成后执行相应的逻辑。
当然对于promise,除了通过then进行处理,也可以通过await进行相关的处理。
await:等待异步操作完成
await关键字用于处理Promise对象,等待异步操作完成并获取其最终的返回值。它可以类比于将支票兑现,等待异步操作的结果。
// 调用了一些数据
async function getData() {
// 模拟一些耗时的操作
setTimeout(() => {}, 2000);
console.log("step 2")
// 调用本地8888端口的服务,并获取返回值(此接口恒定返回hello world,并且有一定的耗时)
return httpUtil.get("http://127.0.0.1:8888/test")
}
// 通过数据做了一些事情
async function dosth(){
console.log("step 1")
// 等待真正的处理值,在此方法中,此处是同步操作
let data = await getData();
console.log("step 3 ", data)
}
console.log("step 0")
// 在外层调用,此处是异步操作
dosth();
console.log("step 4")
输出结果
step 0
step 4
step 1
step 2
step 3 Hello World
参与讨论
(Participate in the discussion)
参与讨论