我尝试用 3 个简单的 Promise 在 Javascript 中实现 Promise 链。我正在解决第一个承诺,最后两个我正在拒绝。直到第二次拒绝为止,它工作正常。但是在 catch 语句之后,它再次为第三个承诺抛出错误。我只想使用一个 catch 块。
var promise1 = new Promise((resolve, reject) => resolve("1st resolved"));
var promise2 = new Promise((resolve, reject) => reject("2nd rejected"));
var promise3 = new Promise((resolve, reject) => reject("3rd rejected"));
// promise chaining
promise1
.then((res) => {
console.log(res);
return promise2;
})
.then((res) => {
console.log(res);
return promise3;
})
.then((res) => {
console.log(res);
})
.catch((err) => console.log("error in promise", err));
我也附上了错误 请参阅此错误 - (https://i.sstatic.net/pQ9wE5fg.png)
代码中的许多内容都是语法错误的。
1-您正在声明一个变量:
var promise1 = new Promise((reso..
const promise1 =()=> new Promise((reso..
function promise1(){ return new Promise((re....}
2- 在你的代码中
promise1
是一个变量而不是函数,(
+ [...参数] + )
.3-
then
语法很特殊,它接受 2 个函数:第一个用于解析,第二个用于拒绝。
正确的编码方式:
const
promise1 =_=> new Promise((resolve, reject) => resolve("1st resolved"))
, promise2 =_=> new Promise((resolve, reject) => reject("2nd rejected"))
, promise3 =_=> new Promise((resolve, reject) => reject("3rd rejected"))
;
// promise chaining
promise1()
.then
( res => { console.log('res1', res) ; return promise2(); }
, rej => { console.log('rej1', rej) ; return promise2(); }
)
.then
( res => { console.log('res2', res) ; return promise3(); }
, rej => { console.log('rej2', rej) ; return promise3(); }
)
.then
( res => { console.log('res3', res); }
, rej => { console.log('rej3', rej); }
)
.catch((err) => console.log("error in promise", err));