promise 怎么使用 async/await
时间: 2023-10-17 21:15:04 浏览: 45
使用 async/await 可以让 promise 更加简洁易读,以下是一个例子:
```javascript
function getData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Data received");
}, 2000);
});
}
async function fetchData() {
try {
const data = await getData();
console.log(data);
} catch (err) {
console.log(err);
}
}
fetchData();
```
在这个例子中,我们定义了一个名为 `getData` 的函数,它返回一个 Promise 对象。我们使用 `setTimeout` 模拟了一个异步操作,并在 2 秒后 resolve 了 Promise。
接着,我们定义了一个名为 `fetchData` 的 async 函数,它使用 `await` 关键字来等待 `getData` 函数返回的 Promise 对象。如果 Promise 被 resolve,我们就可以在控制台上打印出数据。如果 Promise 被 reject,我们就可以在控制台上打印出错误。
最后,我们调用 `fetchData` 函数来执行异步操作,并使用 async/await 来简化 Promise 的处理。
相关问题
Promise和async/await详解
Promise是一种处理异步操作的方式,它作为一个容器,存储着一个尚未完成的异步操作的结果,可以在异步操作完成后获取到该结果。Promise可以用于解决回调地狱的问题,使代码更加简洁明了。
async/await是ES2017中新增的语法,提供了一种更加直观的方式来处理异步操作。async函数返回一个Promise对象,可以在其中使用await关键字等待异步操作的结果。使用async/await可以使异步操作的代码更加清晰易懂,避免了回调嵌套的问题。
下面是Promise和async/await的具体使用方法:
Promise:
```
function getData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const data = 'Hello, world!';
if (data) {
resolve(data);
} else {
reject(new Error('Data not found.'));
}
}, 1000);
});
}
getData()
.then(data => console.log(data))
.catch(error => console.error(error));
```
async/await:
```
async function getData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const data = 'Hello, world!';
if (data) {
resolve(data);
} else {
reject(new Error('Data not found.'));
}
}, 1000);
});
}
async function processData() {
try {
const data = await getData();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();
```
从上面的例子可以看出,使用async/await比使用Promise更加简洁明了。但是需要注意的是,使用async/await要求代码运行在支持Promise和async/await的环境中。
promise与async/await的区别
Promise和async/await都是用于处理异步操作的方法,但是它们之间有一些区别:
1. 语法不同:Promise使用then()和catch()方法来处理异步操作的结果,而async/await使用async函数和await关键字来处理异步操作的结果。
2. 错误处理不同:在Promise中,错误处理通常在catch()方法中完成,而在async/await中,错误处理通常使用try/catch块来完成。
3. 可读性不同:async/await通常比Promise更易于阅读和理解,因为它们更像是同步代码。
下面是一个使用Promise和async/await处理异步操作的例子:
使用Promise:
```javascript
function getData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Data received!');
}, 2000);
});
}
getData()
.then(data => console.log(data))
.catch(error => console.log(error));
```
使用async/await:
```javascript
async function getData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Data received!');
}, 2000);
});
}
async function printData() {
try {
const data = await getData();
console.log(data);
} catch (error) {
console.log(error);
}
}
printData();
```