Promise.then(异步)
时间: 2023-11-10 15:03:47 浏览: 79
Promise.then()是Promise对象的一个方法,用于在Promise对象状态变为resolved(已完成)时执行回调函数。then()方法接受两个参数,第一个参数是resolved状态的回调函数,第二个参数是rejected状态的回调函数(可选)。
例如:
```javascript
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Success!");
}, 1000);
});
promise.then((value) => {
console.log(value); // output: "Success!"
});
```
在上面的代码中,我们创建了一个Promise对象,在1秒后将其状态变为resolved。然后我们通过then()方法指定了resolved状态的回调函数,当Promise对象状态变为resolved时,这个回调函数就会被执行,并输出"Success!"。
相关问题
promise.then是不是异步
回答: 是的,promise.then是异步的。Promise构造函数是同步执行的,而then方法是在Promise的状态改变后异步执行的。当Promise的状态变为resolved时,then方法中的回调函数才会被调用。这是因为Promise采用了回调函数延迟绑定技术,在执行resolve函数的时候,回调函数还没有绑定,所以只能推迟回调函数的执行。[3]
promise.all 异步执行
`Promise.all()`方法可以并行执行多个异步操作,并在所有异步操作完成后执行回调函数。它接受一个由Promise对象组成的数组作为参数,返回一个新的Promise对象,该对象在所有Promise对象都已成功解决时解决,并将每个Promise对象的解决值作为数组传递给回调函数。
以下是一个使用`Promise.all()`方法的示例,其中我们使用`setTimeout()`模拟异步操作:
```javascript
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 1 resolved');
}, 2000);
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 2 resolved');
}, 1000);
});
Promise.all([promise1, promise2]).then((values) => {
console.log(values);
});
```
在上面的示例中,`Promise.all()`方法接受一个包含两个Promise对象的数组作为参数。在2秒后,`promise1`对象将被解决,并返回一个字符串。在1秒后,`promise2`对象将被解决,并返回另一个字符串。当两个Promise对象都已成功解决时,`Promise.all()`方法将返回一个新的Promise对象,并将两个解决值作为数组传递给回调函数。在这种情况下,回调函数将打印以下内容:
```
[ 'Promise 1 resolved', 'Promise 2 resolved' ]
```
阅读全文