当你向 promise.then()
中返回另一个 Promise 时,它会等待这个新的 Promise 完成后再继续执行后续的 .then()
回调。如果你发现它不工作,可能是以下几个原因:
resolve
或 reject
函数。.then()
回调将不会执行。确保使用 .catch()
来捕获和处理错误。下面是一个简单的示例,展示如何在 promise.then()
中返回一个新的 Promise:
function firstPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('First Promise Resolved');
}, 1000);
});
}
function secondPromise(data) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(`Second Promise Resolved with ${data}`);
}, 1000);
});
}
firstPromise()
.then((data) => {
console.log(data); // 输出: First Promise Resolved
return secondPromise(data);
})
.then((data) => {
console.log(data); // 输出: Second Promise Resolved with First Promise Resolved
})
.catch((error) => {
console.error('Error:', error);
});
在这个示例中,firstPromise
返回一个 Promise,它在 1 秒后 resolve。在第一个 .then()
回调中,我们打印出 resolve 的数据,并返回一个新的 secondPromise
。这个新的 Promise 也在 1 秒后 resolve,并传递了前一个 Promise 的数据。第二个 .then()
回调会接收到这个数据并打印出来。
如果你遵循了上述步骤,但 Promise 链仍然不工作,建议检查以下几点:
参考链接:
如果你遇到的问题仍然无法解决,请提供更多的代码细节,以便进一步诊断问题所在。
领取专属 10元无门槛券
手把手带您无忧上云