我有一个错误:(节点:6186)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 ID:1):三p
(节点:6186)[DEP0018] DeprecationWarning:未处理的承诺拒绝已被弃用。将来,未处理的 Promise 拒绝将会以非零退出代码终止 Node.js 进程。
- - - - 那些
========= 两个
捕获CathchError Threep
(节点:6186)PromiseRejectionHandledWarning:Promise 拒绝已异步处理(拒绝 ID:1)我正在按嵌套顺序使用我的 3 个 Promise 函数。
p1、p2、p3-是我的承诺函数,如下所示。
我也尝试在所有 p1、p2、p3 函数中添加 Promise Reject,但它仍然是相同的
enter code here
var p1 = new Promise(function (resolve, reject) {
setTimeout(function () {
// resolve('ones')
resolve('ones')
}, 9000)
})
var p2 = new Promise(function (resolve, reject) {
setTimeout(function () {
// throw new Error('eeeee');
//reject('two')
resolve('two')
}, 1000)
})
var p3 = new Promise(function (resolve, reject) {
setTimeout(function () {
reject('three')
}, 4000)
})
p1.then(function(result){
console.log("--------", result)
// return p2.then(function(res){console.log(res)}).catch(function(err){console.log(err)})
return p2
}).then(function(p2result){
console.log("=========", p2result)
return p3;
}).then(function(p3result){
console.log('*********', p3result)
}).catch(function(err){
console.log("CaughtCathchError", err)
})
p3
is a 独立的承诺没有.catch
。所以,当p3
gets reject
埃德,你会得到一个UnhandledPromiseRejectionWarning
。即使p3
被消耗later in a Promise
具有适当的链catch
, p3
本身没有一个catch
.
代替p3
,你可能会使用function返回一个Promise
,并确保捕获对该函数的所有调用:
var p1 = new Promise(function (resolve, reject) {
setTimeout(function () {
// resolve('ones')
resolve('ones')
}, 1000)
})
var p2 = new Promise(function (resolve, reject) {
setTimeout(function () {
// throw new Error('eeeee');
//reject('two')
resolve('two')
}, 1000)
})
var getp3 = () => new Promise(function (resolve, reject) {
setTimeout(function () {
reject('three')
}, 1000)
})
p1.then(function(result){
console.log("--------", result)
// return p2.then(function(res){console.log(res)}).catch(function(err){console.log(err)})
return p2
}).then(function(p2result){
console.log("=========", p2result)
return getp3();
}).then(function(p3result){
console.log('*********', p3result)
}).catch(function(err){
console.log("CaughtCathchError", err)
})
如果需要初始化p3
立即,然后放一个catch
之后p3
itself.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)