在不使用async/await
关键字的情况下等待Promise的值,可以使用.then()
和.catch()
方法来处理Promise的结果和错误。
示例代码如下:
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Promise resolved");
}, 2000);
});
myPromise.then((value) => {
console.log(value); // 打印 "Promise resolved"
}).catch((error) => {
console.error(error);
});
在上面的示例中,我们创建了一个Promise对象myPromise
,它在2秒后会解析为"Promise resolved"。通过使用.then()
方法,我们可以在Promise解析后执行相应的操作,如打印值。如果Promise被拒绝(rejected),我们可以使用.catch()
方法来处理错误。
请注意,.then()
方法返回一个新的Promise,因此可以链式调用多个.then()
方法来处理多个异步操作的结果。
如果你想要在多个Promise都解决后执行某些操作,你可以使用Promise.all()
方法。示例代码如下:
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Promise 1 resolved");
}, 2000);
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Promise 2 resolved");
}, 3000);
});
Promise.all([promise1, promise2])
.then((values) => {
console.log(values); // 打印 ["Promise 1 resolved", "Promise 2 resolved"]
})
.catch((error) => {
console.error(error);
});
在上面的示例中,我们创建了两个Promise对象promise1
和promise2
,它们分别在2秒和3秒后解析为不同的值。通过使用Promise.all()
方法,我们可以等待所有Promise都解析后执行相应的操作。.then()
方法的参数values
是一个包含所有Promise解析值的数组。
这些方法可以在不使用async/await
关键字的情况下等待Promise的值。