promise 中的报错不阻断js进程。
var t= new Promise(function(resolve, reject) {
throw new Error('test');
});
catch then finally 调用后返回 promise 对象
var p1 = new Promise((resolve, reject) => {
resolve(1);
});
var p2 = p1.then();
p1 === p2 ; //false
这样的话 如果p1调用了then方法后,all获取的就是then返回的promise对象
var p1 = new Promise((resolve, reject) => {
resolve(1);
}).then().catch();
var p1 = new Promise((resolve, reject) => {
reject(2);
}).then().catch();
Promise.all.then(()=>{return 'end1';}).catch(()=>{return 'end2';})
// 返回end1
finally 无先后顺序 , catch返回的 promise对象会被then获取
(1)
t.catch(function() {
console.log(1);
}).then(function(error) {
console.log(2);
throw Error(1)
}).catch(function(error) {
console.log(3);
});
// 1 ,2 ,3
(2)
promise.then(function() {
console.log(1);
}).catch(function(error) {
console.log(2);
}).then(function(error) {
console.log(3);
});
// 2
(3)
promise.catch(function() {
console.log(1);
throw Error(1)
}).catch(function(error) {
console.log(2);
})
// 1,2
(4)
promise.then(function() {
console.log(1);
}).then(function(error) {
console.log(2);
})
// 1,2
all race 数组里面的参数 可以是任何类型
(5) all
var promise = Promise.all( [ 1,{},0,Promise.reject(), Promise.resolve ] )
promise.then(function() {
console.log(1);
}).catch(function(error) {
console.log(2);
})
// 2
(6) all
var promise = Promise.all( [ 1,{},0, Promise.resolve ] )
promise.then(function() {
console.log(1);
}).catch(function(error) {
console.log(2);
})
// 1