JavaScript基本功之promise

编程入门 行业动态 更新时间:2024-10-22 21:42:07

JavaScript<a href=https://www.elefans.com/category/jswz/34/1764760.html style=基本功之promise"/>

JavaScript基本功之promise

promise的状态和变化

状态

  • pending: 进行中
  • resolved: 成功
  • rejected: 失败

状态变化

  • pending-resolved =》then回调方法1
  • pending-reject =》then回调方法2(优先级更高) 或 catch方法

then-error和catch哪个先执行?

结论:

  • 测试发现只会执行一个,优先执行onerror
  • Promise.prototype.catch是Promise.prototype.then(null, rejection)的别名
// 定义 promise
function test(){return new Promise((_,reject)=>{// 已知错误和异常错误 2种情形结果一样return reject('程序错误') // "程序错误"// return a.push(1)  // ReferenceError: a is not defined})
}// 测试
test().then(data=>{ // 只有then-errorconsole.log('data=',data)
},error=>{console.error('then error=',error)
})
// 结果: then error= 程序错误test().then(data=>{ // 只有catchconsole.log('data=',data)
}).catch(error=>{console.error('catch error=',error)
})
// 结果: catch error= 程序错误test().then(data=>{ // 既有then-error又有catchconsole.log('data=',data)
},error=>{console.error('then error=',error)
}).catch(error=>{console.error('catch error=',error)
})
// 结果: then error= 程序错误

then-error和catch适用场景?

个人想法:

  • 如果有多个promise链式调用,采用catch更为方便,
  • 如果只有1个promise调用都可以
// 链式调用
Promise.resolve(1).then((data)=>{console.log('data: ',data);return 2;
}).then((data)=>{console.log('data: ',data);return 3;    
}).then((data)=>{console.log('data: ',data);return 4;    
}).then((data)=>{console.log('data: ',data);// a.push('hi'); // 程序性异常 a未定义 return Promise.reject('程序错误');  // 自定义异常
}).then((data)

更多推荐

JavaScript基本功之promise

本文发布于:2023-11-15 10:27:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1598170.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:基本功   JavaScript   promise

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!