如何捕获promise reject
|
一、
var p1= new Promise().then();
1)使用await:await new Promise();
结论:三种 异常都行
async function f1() { try { var p1 = await new Promise((resolve,rej)=>{ console.log('没有resolve') rej('失败了') } ).then(data=>{ console.log('data::', data); } , err=>{ // ① console.log('err::', err) } ).catch(res=>{ // ② console.log('catch data::', res) } ) } catch (err) { // ③ console.log("12345") } }
2)不使用await
结论:必须有①②任何一个,③兜不住。
async function f2() { try { var p1 = new Promise((resolve,rej)=>{ console.log('没有resolve') rej('失败了') } ).then(data=>{ console.log('data::', data); } // , err=>{ // ① // console.log('err::', err) // } // ).catch(res=>{ // ② // console.log('catch data::', res) // } ) } catch (err) { // ③ console.log("12345") } }
二、
var p1= new Promise();
p1.then
1)使用await:await new Promise().then();
不会进入①②, 必须有③
async function f3() { try { var p1 = await new Promise((resolve,rej)=>{ console.log('没有resolve') rej('失败了') } ) p1.then(data=>{ console.log('data::', data); } , err=>{ // ① console.log('err::', err) } ).catch(res=>{ // ② console.log('catch data::', res) } ) } catch (err) { // ③ console.log("12345") } }
2)不使用await
①②都行,③兜不住。
兜不住,因为都是因为没有使用await
async function f4() { try { var p1 = new Promise((resolve,rej)=>{ console.log('没有resolve') rej('失败了') } ) p1.then(data=>{ console.log('data::', data); } , err=>{ // ① console.log('err::', err) } ).catch(res=>{ // ② console.log('catch data::', res) } ) } catch (err) { // ③ 兜不住 console.log("12345") } } console.clear() f3()
完整:
// 一、 // var p1= new Promise().then(); // 1)使用await:await new Promise(); // 结论:三种 异常都行 // 2)不使用await // 结论:必须有①②任何一个,③兜不住。 // 二、 // var p1= new Promise(); // p1.then // 1)使用await:await new Promise().then(); // 不会进入①②, 必须有③ // 2)不使用await // ①②都行,③兜不住。 // 兜不住,因为都是因为没有使用await async function f1() { try { var p1 = await new Promise((resolve,rej)=>{ console.log('没有resolve') rej('失败了') } ).then(data=>{ console.log('data::', data); } , err=>{ // ① console.log('err::', err) } ).catch(res=>{ // ② console.log('catch data::', res) } ) } catch (err) { // ③ console.log("12345") } } async function f2() { try { var p1 = new Promise((resolve,rej)=>{ console.log('没有resolve') rej('失败了') } ).then(data=>{ console.log('data::', data); } // , err=>{ // ① // console.log('err::', err) // } // ).catch(res=>{ // ② // console.log('catch data::', res) // } ) } catch (err) { // ③ console.log("12345") } } async function f3() { try { var p1 = await new Promise((resolve,rej)=>{ console.log('没有resolve') rej('失败了') } ) p1.then(data=>{ console.log('data::', data); } , err=>{ // ① console.log('err::', err) } ).catch(res=>{ // ② console.log('catch data::', res) } ) } catch (err) { // ③ console.log("12345") } } async function f4() { try { var p1 = new Promise((resolve,rej)=>{ console.log('没有resolve') rej('失败了') } // ) // // p1.then(data=>{ // console.log('data::', data); // } // , err=>{ // ① // console.log('err::', err) // } // ).catch(res=>{ // ② // console.log('catch data::', res) // } ) } catch (err) { // ③ 兜不住 console.log("12345") } } console.clear() f4()