原文:
一直以来,JavaScript处理异步都是以callback的方式,在前端开发领域callback机制几乎深入人心。 但是大量的使用callback虽然也能实现想要的功能,但是大量的使用callback会让代码的可读性非常差(个人看法),近几年随着JavaScript开发模式的逐渐成熟,CommonJS规范顺势而生,其中就包括提出了Promise规范,Promise完全改变了js异步编程的写法,让异步编程变得十分的易于理解
Promise
一个promise有三种状态:等待(pending 默认)、已完成(fulfilled)、已拒绝(rejected)
一个promise的状态只可能从“等待”转到“完成”态或者“拒绝”态,不能逆向转换
promise必须实现
then
方法-
then方法接受两个参数, 第一个参数是成功时的回调,第二个参数是失败时的回调
function testPromise(bool) { return new Promise((success, error)=>{ if (bool) { success(); } else { error(); } });}testPromise(true).then(()=>{ // 如果 testPromise 的 参数为真则执行},()=>{ // 如果 testPromise 的 参数为假则执行});
- 做个形象的比喻, promise 就是考试的判断题, 默认的是没有答案(等待状态) ,只要提交答案无论对错, 都不能再修改, 放到了编程思想中就是只要执行了 success 或者 error函数 就不能逆向的修改状态