在JavaScript的世界中,所有代码都是单线程执行的。
由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行(为了能准确获取到数据)
promise有三个状态:
1、pending[待定]初始状态
2、fulfilled[实现]操作成功
3、rejected[被否决]操作失败
当promise状态发生改变,就会触发then()里的响应函数处理后续步骤;
promise状态一经改变,不会再变。
使用Promise创建promise对象 这个函数接受一个函数,其中我们的异步操作就写在这个函数里面
这个函数有两个参数 resolve reject 在异步操作执行完成的时候调用 resolve 标识操作确实完成了
resolve可以向外边传数据 外面通过promise对象.then() 来接受
扩展:Promisse.all() Promise.race()
——>
扯淡环节: async await
在async/await之前,我们有三种方式写异步代码
嵌套回调
以Promise为主的链式回调
使用Generators
但是,这三种写起来都不够优雅,ES7做了优化改进,async/await应运而生,async/await相比较Promise 对象then 函数的嵌套,与 Generator 执行的繁琐(需要借助co才能自动执行,否则得手动调用next() ), Async/Await 可以让你轻松写出同步风格的代码同时又拥有异步机制,更加简洁,逻辑更加清晰。