1、Promise是一个ES5末期提供的构造函数,ES6正式写入标准浏览器厂商实现了它的功能,它解决了异步编程的回调函数的无限制嵌套 的地狱回调 的问题
<script>
//es6解决异步的promsie方式
xx1()
.then(xx2())
.then(xx3())
//es7
await xx1()
await xx2()
await xx3()
console.log(typeof Promise)
console.log(typeof [10,203,40])
2、promise对象是一种特殊的数据容器,promise对象内部是同步的代码环境
3、promise对取数据的方式是通过调用它的then方法传入回调函数来取数据,是一种异步函数模式(也就是then函数是一个异步函数,传入的回调函数会延时调用)
4、then函数有返回值
如果then的回调函数的返回值是promise对象,那么then函数的返回值就是它
如果then的回调函数的返回值不是promise对象,那么then函数的返回值就是把它包装为一个新的promise对象返回
5、浏览器的异步任务如何开子线程执行的?
js是单线程的语法,不能开子线程 但是js的底层是js引擎 引擎是c/c++代码可以开子线程 然后给js提供异步api,如:计时器 、promise 、console.log
6、promise内部的异步任务遵循浏览器的异步任务的执行
<script>
//面试题
var p1=new Promise((resolve,reject)=>{
console.log(1)
setTimeout(()=>{
console.log(2)
},0)
resolve(4)
console.log(3)
})
console.log(5)
p1.then((n)=>{
console.log(n)
return new Promise(()=>{
setTimeout(()=>{console.log(8)},0)
console.log((7))
})
})
console.log(6)
//1 3 5 6 4 7 2 8