学习promise语法的铺垫语法:
1.setTime( )函数是一个非阻塞的异步函数
如果添加两个setTime函数,他们同 时运行。先运行完毕的先打印。如果同时运行完毕,那么就按代码的顺序打印。
2.后端的fs.readFile( )函数也是一个非阻塞的异步函数
3.ES6中的promise对象的then函数也是一个非阻塞的异步函数
- Promise是一个ES5已经出现了,中不过不太规范,直到ES6才写入标准
- promise是一个构造函数,创建一个数据容器
数据容器有:Map Set Object Array promise ====>被动产生数据,给他添加数据
- promise主动产生数据 不用给他产生数据,而是他自己产生数据。
怎样产生数据?====>网络请求会学习!
取数据:数组==>下标;对象==>点语法;Map==>get函数;set==>遍历器;Promise==>then函数,传回调函数
then函数是一个 异步函数。====当我们在then函数后面添加一行代码console.log(222)时,它会先打印222而不是data.
then函数的返回值=====>一个新的promise对象,是then传入的回调函数的返回值,如果其返回值是一个promise对象,那麽久是它;如果不是就会把函数的结果包装为一个生成数据了的promise对象。
return 200是then函数的返回值,它不是一个promise对象,所以系统会把它包装成一个promise对象,这个promise对象中有一个200,那么我们怎样去读取这个200呢,就要用then函数来读取。
那么这个then函数也有返回值,其返回值一定是一个promise对象,具体的返回值要看data。
Promise函数是一个同步函数,但是调用的then函数是一个异步非阻塞函数。