js中promise面试题
时间: 2024-09-02 18:02:54 浏览: 96
JavaScript中的Promise是一种处理异步操作的对象,它允许你将异步操作写得更加接近同步代码的形式,这样代码更加清晰易懂。Promise有三种状态:pending(等待中)、fulfilled(已成功)和rejected(已失败)。一旦Promise被解决(fulfilled或rejected),它就固定在那个状态,不能再次改变。
以下是几个常见的JavaScript Promise面试题:
1. Promise的`.then()`方法和`.catch()`方法分别有什么作用?
`.then()`方法用于处理Promise成功后的回调函数,它可以接受两个参数,第一个参数是Promise成功时调用的函数,第二个参数是可选的,如果Promise被拒绝(rejected),则调用的函数。`.catch()`方法则专门用来处理Promise被拒绝的情况。
2. 如何创建一个Promise?
可以通过new Promise()构造函数来创建一个新的Promise实例。构造函数接受一个执行器(executor)函数作为参数,该函数接受两个参数:resolve和reject。resolve和reject都是函数,分别用来将Promise的状态从pending改为fulfilled或rejected。
```javascript
let promise = new Promise((resolve, reject) => {
// 异步操作代码
if (/* 成功条件 */) {
resolve("操作成功");
} else {
reject("操作失败");
}
});
```
3. 如何同时运行多个异步操作,并在它们全部完成后再执行后续操作?
可以使用`Promise.all()`方法。它接受一个Promise对象的数组作为参数,只有所有的Promise都成功解决后,它才会解决;如果任何一个Promise被拒绝,它就会被拒绝。
```javascript
let promise1 = Promise.resolve(3);
let promise2 = 42;
let promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then(values => {
console.log(values); // [3, 42, "foo"]
});
```
4. 如何处理Promise链中发生的错误?
可以在`.then()`方法之后连着使用`.catch()`方法来捕获和处理错误。如果在`.then()`中发生的任何错误,都会被传递到下一个`.catch()`。
```javascript
promise
.then(result => {
// 处理结果
})
.catch(error => {
// 处理错误
});
```
阅读全文